{"version":3,"sources":["../node_modules/history/lib/useQueries.js","../node_modules/history/lib/useBasename.js","../node_modules/history/lib/runTransitionHook.js","../node_modules/history/lib/createHistory.js","../node_modules/history/lib/ExecutionEnvironment.js","../node_modules/history/lib/BrowserProtocol.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/hash.js/lib/hash.js","../node_modules/fbjs/lib/warning.js","../node_modules/hyphenate-style-name/index.js","../node_modules/history/lib/DOMStateStorage.js","../node_modules/hash-base/index.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/history/lib/createMemoryHistory.js","../node_modules/history/lib/createBrowserHistory.js","../node_modules/history/lib/createHashHistory.js","../node_modules/history/lib/AsyncUtils.js","../node_modules/history/lib/RefreshProtocol.js","../node_modules/history/lib/HashProtocol.js","../node_modules/hash-base/node_modules/safe-buffer/index.js","../node_modules/hash-base/node_modules/readable-stream/readable-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/exenv/index.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/src/Util.ts","../../../src/css/layout/bounds.ts","../../node_modules/css-line-break/node_modules/src/Util.ts","../../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../../node_modules/css-line-break/node_modules/src/Trie.ts","../../node_modules/src/linebreak-trie.ts","../../node_modules/src/LineBreak.ts","../../../src/css/syntax/tokenizer.ts","../../../src/css/syntax/parser.ts","../../../src/css/types/length.ts","../../../src/css/types/length-percentage.ts","../../../src/css/types/angle.ts","../../../src/css/types/color.ts","../../../src/css/property-descriptors/background-size.ts","../../../src/css/property-descriptors/background-clip.ts","../../../src/css/property-descriptors/background-color.ts","../../../src/css/types/functions/gradient.ts","../../../src/css/types/functions/-prefix-linear-gradient.ts","../../../src/css/types/functions/-prefix-radial-gradient.ts","../../../src/css/types/functions/radial-gradient.ts","../../../src/css/types/image.ts","../../../src/css/types/functions/linear-gradient.ts","../../../src/css/types/functions/-webkit-gradient.ts","../../../src/css/property-descriptors/background-image.ts","../../../src/css/property-descriptors/background-origin.ts","../../../src/css/property-descriptors/background-position.ts","../../../src/css/property-descriptors/background-repeat.ts","../../../src/css/property-descriptors/line-break.ts","../../../src/css/property-descriptors/border-color.ts","../../../src/css/property-descriptors/border-radius.ts","../../../src/css/property-descriptors/border-style.ts","../../../src/css/property-descriptors/border-width.ts","../../../src/css/property-descriptors/color.ts","../../../src/css/property-descriptors/direction.ts","../../../src/css/property-descriptors/display.ts","../../../src/css/property-descriptors/float.ts","../../../src/css/property-descriptors/letter-spacing.ts","../../../src/css/property-descriptors/word-break.ts","../../../src/css/property-descriptors/line-height.ts","../../../src/css/property-descriptors/list-style-image.ts","../../../src/css/property-descriptors/list-style-position.ts","../../../src/css/property-descriptors/list-style-type.ts","../../../src/css/property-descriptors/margin.ts","../../../src/css/property-descriptors/overflow.ts","../../../src/css/property-descriptors/overflow-wrap.ts","../../../src/css/property-descriptors/padding.ts","../../../src/css/property-descriptors/text-align.ts","../../../src/css/property-descriptors/position.ts","../../../src/css/property-descriptors/text-shadow.ts","../../../src/css/property-descriptors/text-transform.ts","../../../src/css/property-descriptors/transform.ts","../../../src/css/property-descriptors/transform-origin.ts","../../../src/css/property-descriptors/visibility.ts","../../node_modules/text-segmentation/node_modules/src/Util.ts","../../../src/css/property-descriptors/z-index.ts","../../../src/css/types/time.ts","../../../src/css/property-descriptors/opacity.ts","../../../src/css/property-descriptors/text-decoration-color.ts","../../../src/css/property-descriptors/text-decoration-line.ts","../../../src/css/property-descriptors/font-family.ts","../../../src/css/property-descriptors/font-size.ts","../../../src/css/property-descriptors/font-weight.ts","../../../src/css/property-descriptors/font-variant.ts","../../../src/css/property-descriptors/font-style.ts","../../../src/core/bitwise.ts","../../../src/css/property-descriptors/content.ts","../../../src/css/property-descriptors/counter-increment.ts","../../../src/css/property-descriptors/counter-reset.ts","../../../src/css/property-descriptors/duration.ts","../../../src/css/property-descriptors/quotes.ts","../../../src/css/property-descriptors/box-shadow.ts","../../../src/css/property-descriptors/paint-order.ts","../../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../../src/css/index.ts","../../../src/core/debugger.ts","../../../src/dom/element-container.ts","../../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../../node_modules/text-segmentation/node_modules/src/Trie.ts","../../node_modules/src/GraphemeBreak.ts","../../../src/dom/document-cloner.ts","../../node_modules/src/grapheme-break-trie.ts","../../../src/core/features.ts","../../../src/css/layout/text.ts","../../../src/dom/text-container.ts","../../../src/dom/replaced-elements/image-element-container.ts","../../../src/dom/replaced-elements/canvas-element-container.ts","../../../src/dom/replaced-elements/svg-element-container.ts","../../../src/dom/elements/li-element-container.ts","../../../src/dom/elements/ol-element-container.ts","../../../src/dom/replaced-elements/input-element-container.ts","../../../src/dom/elements/select-element-container.ts","../../../src/dom/elements/textarea-element-container.ts","../../../src/dom/replaced-elements/iframe-element-container.ts","../../../src/dom/node-parser.ts","../../../src/css/types/functions/counter.ts","../../../src/render/bound-curves.ts","../../../src/core/cache-storage.ts","../../../src/render/vector.ts","../../../src/render/bezier-curve.ts","../../../src/render/effects.ts","../../../src/render/path.ts","../../../src/render/stacking-context.ts","../../../src/render/border.ts","../../../src/render/box-sizing.ts","../../../src/render/background.ts","../../../src/render/font-metrics.ts","../../../src/core/util.ts","../../../src/render/renderer.ts","../../../src/render/canvas/canvas-renderer.ts","../../../src/render/canvas/foreignobject-renderer.ts","../../../src/core/logger.ts","../../../src/core/context.ts","../../../src/index.ts","../node_modules/fbjs/lib/emptyObject.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/history/lib/PathUtils.js","../../index.ts","../node_modules/history/lib/LocationUtils.js","../node_modules/hash-base/node_modules/readable-stream/errors-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/history/lib/Actions.js","../node_modules/history/lib/DOMUtils.js","../node_modules/fbjs/lib/invariant.js"],"names":["exports","__esModule","obj","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_queryString","require","_runTransitionHook","_runTransitionHook2","default","_LocationUtils","_PathUtils","defaultStringifyQuery","query","stringify","replace","defaultParseQueryString","parse","createHistory","options","undefined","history","stringifyQuery","parseQueryString","decodeQuery","location","search","substring","encodeQuery","object","parsePath","queryString","getCurrentLocation","listenBefore","hook","callback","listen","listener","push","createPath","createHref","createLocation","_len","args","Array","_key","newLocation","apply","concat","createQuery","basename","addBasename","pathname","toLowerCase","indexOf","prependBasename","pname","normalizedBasename","slice","normalizedPathname","charAt","_warning","result","_AsyncUtils","_Actions","getUserConfirmation","pushLocation","replaceLocation","go","keyLength","currentLocation","pendingLocation","beforeListeners","listeners","allKeys","getCurrentIndex","action","POP","updateLocation","nextLocation","currentIndex","PUSH","REPLACE","forEach","filter","item","confirmTransitionTo","loopAsync","index","next","done","message","ok","transitionTo","locationsAreEqual","prevPath","statesAreEqual","state","prevIndex","nextIndex","input","goBack","goForward","createKey","Math","random","toString","substr","canUseDOM","window","document","createElement","startListener","_DOMUtils","_DOMStateStorage","_ExecutionEnvironment","needsHashchangeListener","supportsPopstateOnHashchange","_createLocation","historyState","hash","readState","error","confirm","handlePopState","event","isExtraneousPopstateEvent","addEventListener","handleUnpoppedHashChange","removeEventListener","updateState","saveState","path","pushState","replaceState","n","ERR_STREAM_PREMATURE_CLOSE","codes","noop","module","eos","stream","opts","called","this","once","readable","writable","onlegacyfinish","onfinish","writableEnded","_writableState","finished","readableEnded","_readableState","endEmitted","onend","onerror","err","onclose","ended","onrequest","req","on","setHeader","abort","isRequest","removeListener","utils","common","sha","ripemd","hmac","sha1","sha256","sha224","sha384","sha512","ripemd160","warning","uppercasePattern","msPattern","cache","toHyphenLower","match","hyphenateStyleName","name","hName","test","QuotaExceededErrors","QuotaExceededError","QUOTA_EXCEEDED_ERR","SecurityErrors","SecurityError","sessionStorage","removeItem","setItem","JSON","json","getItem","Buffer","Transform","HashBase","blockSize","_block","allocUnsafe","_blockSize","_blockOffset","_length","_finalized","inherits","_transform","chunk","encoding","update","_flush","digest","data","val","prefix","isBuffer","TypeError","throwIfNotStringOrBuffer","Error","from","block","offset","_update","j","carry","_digest","fill","Duplex","Readable","ReadableState","EventEmitter","EElistenerCount","emitter","type","Stream","OurUint8Array","global","self","Uint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","highWaterMark","buffer","pipes","pipesCount","flowing","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","destroyed","defaultEncoding","awaitDrain","readingMore","decoder","read","_read","destroy","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","end","emitReadable","emitReadable_","onEofChunk","chunkInvalid","getPrototypeOf","_uint8ArrayToBuffer","addChunk","write","maybeReadMore","emit","unshift","defineProperty","enumerable","get","set","value","_undestroy","undestroy","cb","isPaused","setEncoding","enc","p","head","content","clear","howMuchToRead","computeNewHighWaterMark","process","nextTick","flow","maybeReadMore_","len","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","shift","join","first","consume","endReadable","endReadableNT","wState","xs","x","l","parseInt","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","fn","prependListener","_events","isArray","dests","splice","ev","res","addListener","removeAllListeners","wrap","_this","method","bind","Symbol","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","errorEmitted","ending","finalCalled","prefinished","rState","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","floor","CorkedRequest","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","Writable","WritableState","internalUtil","deprecate","realHasInstance","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","bufferedRequestCount","_write","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","current","out","_","hasInstance","Function","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","transform","flush","err2","rotr32","ch32","y","z","maj32","p32","ft_1","s","s0_256","s1_256","g0_256","g1_256","shaCommon","assert","sum32","sum32_4","sum32_5","BlockHash","sha256_K","SHA256","h","k","W","outSize","hmacStrength","padLength","msg","start","a","b","c","d","e","f","g","T1","T2","toHex32","split32","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","r","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","makeEmptyFunction","arg","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","_invariant2","_interopRequireDefault","_createHistory2","createStateStorage","entries","reduce","memo","init","canGo","_options","map","storage","BrowserProtocol","_interopRequireWildcard","RefreshProtocol","newObj","useRefresh","forceRefresh","supportsHistory","Protocol","stopListener","before","unlisten","HashProtocol","addLeadingSlash","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","queryKey","hashType","pathCoder","supportsGoWithoutReloadUsingHash","turns","work","currentTurn","isDone","isSync","hasNext","doneArgs","_BrowserProtocol","href","getHashPath","hashIndex","replaceHashPath","getQueryStringValueFromPath","stripQueryStringValueFromPath","prevLocation","handleHashChange","encodedPath","updateHash","addQueryStringValueToPath","pushHashPath","copyProps","dst","SafeBuffer","encodingOrOffset","alloc","allocUnsafeSlow","create","size","buf","SlowBuffer","PassThrough","pipeline","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","_defineProperties","props","descriptor","hint","prim","toPrimitive","String","Number","_toPrimitive","inspect","custom","instance","Constructor","_classCallCheck","tail","protoProps","staticProps","v","copy","hasStrings","_getString","_getBuffer","str","nb","depth","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","resolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","Promise","reject","promise","lastPromise","then","wrapForNext","_this2","_Object$create","iterator","code","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","streams","pop","destroys","rotl32","sha1_K","SHA1","t","SHA224","SHA384","sum32_3","RIPEMD160","endian","K","Kh","A","B","C","D","E","Ah","Bh","Ch","Dh","Eh","T","rh","sh","Hmac","Hash","inner","outer","_init","toArray","HmacDRBG","predResist","outLen","minEntropy","_reseed","reseedInterval","V","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","seed","_hmac","kmac","reseed","add","addEnc","generate","temp","encode","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","define","__proto__","__extends","__","constructor","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","__generator","body","label","sent","trys","ops","verb","op","__spreadArray","pack","ar","left","top","width","height","w","Bounds","fromClientRect","context","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","rect","EMPTY","parseBounds","node","getBoundingClientRect","toCodePoints","codePoints","charCodeAt","extra","fromCodePoint","codeUnits","codePoint","fromCharCode","chars","lookup","slice16","view","Uint16Array","initialValue","errorValue","highStart","highValueIndex","ix","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","ea_OP","UnicodeTrie","base64","_byteLength","encoded1","encoded2","encoded3","encoded4","bufferLength","ArrayBuffer","bytes","decode","view32","polyUint32Array","Uint32Array","view16","polyUint16Array","headerLength","ceil","Trie","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","classTypes","prev","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","cssFormattedClasses","lineBreak","wordBreak","types","indices","categories","classType","codePointsToCharacterClasses","isLetterNumber","letterNumber","required","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","delta","digits","questionMarks","digit","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","min","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","isSurrogateCodePoint","_tokens","tokenizer","Tokenizer","Parser","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","angle","_context","PI","isAngle","parseNamedSide","ident","deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","round","getTokenColorValue","max","rgb","hue2rgb","t1","t2","hue","BACKGROUND_SIZE","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","backgroundColor","format","parseColorStop","colorType","stop","processColorStops","stops","lineLength","processStops","previous","absoluteValue","gapBegin","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","firstToken","angleType","colorStop","prefixRadialGradient","shape","position","isColorStop","acc","image","url","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","backgroundImage","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontWeight","fontVariant","fontStyle","contains","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open","close","getQuote","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","parser","isDebugging","element","elementType","getAttribute","getElementDebugType","textNodes","elements","styles","CSSParsedDeclaration","getComputedStyle","isHTMLElementNode","some","bounds","PseudoElementType","L","LV","LVT","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","lastEnd","graphemeBreak","isGreenPixel","createForeignObjectSVG","xmlns","svg","createElementNS","foreignObject","setAttributeNS","appendChild","loadSerializedSVG","img","Image","onload","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","createRange","range","testElement","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","removeChild","testRangeBounds","SUPPORT_RANGE_BOUNDS","wordSpacing","innerHTML","repeat","firstChild","textList","supports","every","text","setStart","setEnd","boundAhead","testIOSLineBreak","canvas","ctx","getContext","drawImage","toDataURL","testSVG","fetch","fillStyle","fillRect","greenImageSrc","getImageData","catch","testForeignObject","crossOrigin","XMLHttpRequest","responseType","Intl","Segmenter","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmentGraphemes","SUPPORT_NATIVE_TEXT_SEGMENTATION","segmenter","granularity","segment","bk","breaker","graphemes","splitGraphemes","breakText","breakWords","segmentWords","wordSeparators","forbiddenBreakpoints","Break","LineBreaker","words","textBounds","trim","clientRects","getClientRects","subSegments","subSegment","TextBounds","replacementNode","splitText","parseTextBounds","CAPITALIZE","capitalize","m","p1","p2","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","ElementContainer","setAttribute","baseVal","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","PASSWORD","checked","placeholder","getInputValue","option","selectedIndex","iframe","contentWindow","documentElement","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","createContainer","isImageElement","ImageElementContainer","isCanvasElement","CanvasElementContainer","isSVGElement","SVGElementContainer","isLIElement","LIElementContainer","isOLElement","OLElementContainer","isInputElement","InputElementContainer","isSelectElement","SelectElementContainer","isTextareaElement","TextareaElementContainer","isIFrameElement","IFrameElementContainer","container","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","TextContainer","isElementNode","isSlotElement","assignedNodes","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isVideoElement","isStyleElement","isCustomElement","counters","getCounterValue","getCounterValues","canReset","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","scrolledElements","referenceElement","CounterState","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","scrollTo","navigator","userAgent","logger","warn","onclone","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","attribs","getContextAttributes","preserveDrawingBuffer","video","offsetWidth","offsetHeight","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","CSSParsedCounterDeclaration","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","CSSParsedPseudoDeclaration","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","property","setProperty","getPropertyValue","internalSubset","publicId","systemId","createStyles","getOrigin","link","CacheStorage","_link","protocol","hostname","port","isSameOrigin","_origin","setContext","_cache","has","isBlobImage","isRenderable","loadImage","useCORS","isInlineImage","SUPPORT_CORS_IMAGES","useProxy","proxy","SUPPORT_CORS_XHR","isInlineBase64Image","setTimeout","imageTimeout","SUPPORT_RESPONSE_TYPE","xhr","status","response","FileReader","readAsDataURL","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","deltaX","deltaY","Vector","lerp","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","BezierCurve","reverse","isBezierCurve","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","isClipEffect","effect","equalPath","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","effects","BoundCurves","OpacityEffect","TransformEffect","borderBox","paddingBox","ClipEffect","getEffects","inFlow","croplessEffects","processListItems","owner","numbering","listValue","parseStackingContexts","paintContainer","ElementPaint","StackingContext","listItems","parseStackTree","stackingContext","realStackingContext","treatAsRealStackingContext","listOwnerItems","parentStack","stack","parsePathForBorder","borderSide","createPathFromCurves","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","CONTAIN","COVER","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","_activeEffects","scale","fontMetrics","FontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","save","isOpacityEffect","globalAlpha","isTransformEffect","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","CanvasRenderer","render","beginPath","arc","isTextInputElement","canvasTextAlign","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","createPattern","x0","x1","y0","y1","createLinearGradient","addColorStop","background","isRadialGradient","gradient","rx","ry","calculateRadius","createRadialGradient","midX","midY","invF","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","parsePathForBorderDoubleOuter","innerPaths","parsePathForBorderDoubleInner","hasBackground","borders","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","parsePathForBorderStroke","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","setLineDash","lineCap","stroke","path1","path2","Renderer","calculateContentBoxPath","iOSBrokenFonts","fontFamilies","id","enabled","Date","now","console","getTime","instances","instanceName","Context","instanceCount","Logger","logging","Cache","renderElement","resourceOptions","contextOptions","windowOptions","windowWidth","innerWidth","windowHeight","innerHeight","foreignObjectRendering","cloneOptions","documentCloner","DocumentCloner","clonedElement","scrollWidth","clientWidth","scrollHeight","clientHeight","parseDocumentSize","parseBackgroundColor","renderOptions","devicePixelRatio","ForeignObjectRenderer","removeContainer","backgroundColorOverride","defaultBackgroundColor","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","isSurrogatePair","htonl","zero2","word","zero8","toHex","join32","pos","lo","hi","num","_parsePath","_parsePath2","RegExp","extractPath","searchIndex","registerVersion","_typeof","isDate","typeofA","keysofA","keysofB","createErrorType","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","this_len","endsWith","includes","objectKeys","allowHalfOpen","onEndNT","pending","pendingTotal","_delta8","_delta32","_pad","detachEvent","ua","condition","argIndex","framesToPop"],"mappings":"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","file":"static/js/main~db300d2f.7e2ab03b.chunk.js","sourcesContent":["'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultStringifyQuery = function defaultStringifyQuery(query) {\n return (0, _queryString.stringify)(query).replace(/%20/g, '+');\n};\n\nvar defaultParseQueryString = _queryString.parse;\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nvar useQueries = function useQueries(createHistory) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var history = createHistory(options);\n var stringifyQuery = options.stringifyQuery,\n parseQueryString = options.parseQueryString;\n\n\n if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n var decodeQuery = function decodeQuery(location) {\n if (!location) return location;\n\n if (location.query == null) location.query = parseQueryString(location.search.substring(1));\n\n return location;\n };\n\n var encodeQuery = function encodeQuery(location, query) {\n if (query == null) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var queryString = stringifyQuery(query);\n var search = queryString ? '?' + queryString : '';\n\n return _extends({}, object, {\n search: search\n });\n };\n\n // Override all read methods with query-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return decodeQuery(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(decodeQuery(location));\n });\n };\n\n // Override all write methods with query-aware versions.\n var push = function push(location) {\n return history.push(encodeQuery(location, location.query));\n };\n\n var replace = function replace(location) {\n return history.replace(encodeQuery(location, location.query));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(encodeQuery(location, location.query));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(encodeQuery(location, location.query));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));\n\n if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);\n\n return decodeQuery(newLocation);\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useQueries;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useBasename = function useBasename(createHistory) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var history = createHistory(options);\n var basename = options.basename;\n\n\n var addBasename = function addBasename(location) {\n if (!location) return location;\n\n if (basename && location.basename == null) {\n if (location.pathname.toLowerCase().indexOf(basename.toLowerCase()) === 0) {\n location.pathname = location.pathname.substring(basename.length);\n location.basename = basename;\n\n if (location.pathname === '') location.pathname = '/';\n } else {\n location.basename = '';\n }\n }\n\n return location;\n };\n\n var prependBasename = function prependBasename(location) {\n if (!basename) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var pname = object.pathname;\n var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n var pathname = normalizedBasename + normalizedPathname;\n\n return _extends({}, object, {\n pathname: pathname\n });\n };\n\n // Override all read methods with basename-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return addBasename(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(addBasename(location));\n });\n };\n\n // Override all write methods with basename-aware versions.\n var push = function push(location) {\n return history.push(prependBasename(location));\n };\n\n var replace = function replace(location) {\n return history.replace(prependBasename(location));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(prependBasename(location));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(prependBasename(location));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useBasename;","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar runTransitionHook = function runTransitionHook(hook, location, callback) {\n var result = hook(location, callback);\n\n if (hook.length < 2) {\n // Assume the hook runs synchronously and automatically\n // call the callback with the return value.\n callback(result);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not \"return\" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;\n }\n};\n\nexports.default = runTransitionHook;","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _Actions = require('./Actions');\n\nvar _LocationUtils = require('./LocationUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createHistory = function createHistory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getCurrentLocation = options.getCurrentLocation,\n getUserConfirmation = options.getUserConfirmation,\n pushLocation = options.pushLocation,\n replaceLocation = options.replaceLocation,\n go = options.go,\n keyLength = options.keyLength;\n\n\n var currentLocation = void 0;\n var pendingLocation = void 0;\n var beforeListeners = [];\n var listeners = [];\n var allKeys = [];\n\n var getCurrentIndex = function getCurrentIndex() {\n if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);\n\n if (currentLocation) return allKeys.indexOf(currentLocation.key);\n\n return -1;\n };\n\n var updateLocation = function updateLocation(nextLocation) {\n var currentIndex = getCurrentIndex();\n\n currentLocation = nextLocation;\n\n if (currentLocation.action === _Actions.PUSH) {\n allKeys = [].concat(allKeys.slice(0, currentIndex + 1), [currentLocation.key]);\n } else if (currentLocation.action === _Actions.REPLACE) {\n allKeys[currentIndex] = currentLocation.key;\n }\n\n listeners.forEach(function (listener) {\n return listener(currentLocation);\n });\n };\n\n var listenBefore = function listenBefore(listener) {\n beforeListeners.push(listener);\n\n return function () {\n return beforeListeners = beforeListeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var listen = function listen(listener) {\n listeners.push(listener);\n\n return function () {\n return listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, callback) {\n (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {\n (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {\n return result != null ? done(result) : next();\n });\n }, function (message) {\n if (getUserConfirmation && typeof message === 'string') {\n getUserConfirmation(message, function (ok) {\n return callback(ok !== false);\n });\n } else {\n callback(message !== false);\n }\n });\n };\n\n var transitionTo = function transitionTo(nextLocation) {\n if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do\n\n pendingLocation = nextLocation;\n\n confirmTransitionTo(nextLocation, function (ok) {\n if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation\n\n pendingLocation = null;\n\n if (ok) {\n // Treat PUSH to same path like REPLACE to be consistent with browsers\n if (nextLocation.action === _Actions.PUSH) {\n var prevPath = (0, _PathUtils.createPath)(currentLocation);\n var nextPath = (0, _PathUtils.createPath)(nextLocation);\n\n if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n }\n\n if (nextLocation.action === _Actions.POP) {\n updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.PUSH) {\n if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.REPLACE) {\n if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);\n }\n } else if (currentLocation && nextLocation.action === _Actions.POP) {\n var prevIndex = allKeys.indexOf(currentLocation.key);\n var nextIndex = allKeys.indexOf(nextLocation.key);\n\n if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL\n }\n });\n };\n\n var push = function push(input) {\n return transitionTo(createLocation(input, _Actions.PUSH));\n };\n\n var replace = function replace(input) {\n return transitionTo(createLocation(input, _Actions.REPLACE));\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength || 6);\n };\n\n var createHref = function createHref(location) {\n return (0, _PathUtils.createPath)(location);\n };\n\n var createLocation = function createLocation(location, action) {\n var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createKey();\n return (0, _LocationUtils.createLocation)(location, action, key);\n };\n\n return {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n transitionTo: transitionTo,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n createKey: createKey,\n createPath: _PathUtils.createPath,\n createHref: createHref,\n createLocation: createLocation\n };\n};\n\nexports.default = createHistory;","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);","'use strict';\n\nexports.__esModule = true;\nexports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar needsHashchangeListener = _ExecutionEnvironment.canUseDOM && !(0, _DOMUtils.supportsPopstateOnHashchange)();\n\nvar _createLocation = function _createLocation(historyState) {\n var key = historyState && historyState.key;\n\n return (0, _LocationUtils.createLocation)({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n state: key ? (0, _DOMStateStorage.readState)(key) : undefined\n }, undefined, key);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n var historyState = void 0;\n try {\n historyState = window.history.state || {};\n } catch (error) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n historyState = {};\n }\n\n return _createLocation(historyState);\n};\n\nvar getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\nvar startListener = exports.startListener = function startListener(listener) {\n var handlePopState = function handlePopState(event) {\n if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) // Ignore extraneous popstate events in WebKit\n return;\n listener(_createLocation(event.state));\n };\n\n (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n var handleUnpoppedHashChange = function handleUnpoppedHashChange() {\n return listener(getCurrentLocation());\n };\n\n if (needsHashchangeListener) {\n (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n }\n\n return function () {\n (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\n if (needsHashchangeListener) {\n (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n }\n };\n};\n\nvar updateLocation = function updateLocation(location, updateState) {\n var state = location.state,\n key = location.key;\n\n\n if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);\n\n updateState({ key: key }, (0, _PathUtils.createPath)(location));\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.pushState(state, null, path);\n });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.replaceState(state, null, path);\n });\n};\n\nvar go = exports.go = function go(n) {\n if (n) window.history.go(n);\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nexports.__esModule = true;\nexports.readState = exports.saveState = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QuotaExceededErrors = {\n QuotaExceededError: true,\n QUOTA_EXCEEDED_ERR: true\n};\n\nvar SecurityErrors = {\n SecurityError: true\n};\n\nvar KeyPrefix = '@@History/';\n\nvar createKey = function createKey(key) {\n return KeyPrefix + key;\n};\n\nvar saveState = exports.saveState = function saveState(key, state) {\n if (!window.sessionStorage) {\n // Session storage is not available or hidden.\n // sessionStorage is undefined in Internet Explorer when served via file protocol.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;\n\n return;\n }\n\n try {\n if (state == null) {\n window.sessionStorage.removeItem(createKey(key));\n } else {\n window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n }\n } catch (error) {\n if (SecurityErrors[error.name]) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;\n\n return;\n }\n\n if (QuotaExceededErrors[error.name] && window.sessionStorage.length === 0) {\n // Safari \"private mode\" throws QuotaExceededError.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;\n\n return;\n }\n\n throw error;\n }\n};\n\nvar readState = exports.readState = function readState(key) {\n var json = void 0;\n try {\n json = window.sessionStorage.getItem(createKey(key));\n } catch (error) {\n if (SecurityErrors[error.name]) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;\n\n return undefined;\n }\n }\n\n if (json) {\n try {\n return JSON.parse(json);\n } catch (error) {\n // Ignore invalid JSON.\n }\n }\n\n return undefined;\n};","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 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\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createStateStorage = function createStateStorage(entries) {\n return entries.filter(function (entry) {\n return entry.state;\n }).reduce(function (memo, entry) {\n memo[entry.key] = entry.state;\n return memo;\n }, {});\n};\n\nvar createMemoryHistory = function createMemoryHistory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Array.isArray(options)) {\n options = { entries: options };\n } else if (typeof options === 'string') {\n options = { entries: [options] };\n }\n\n var getCurrentLocation = function getCurrentLocation() {\n var entry = entries[current];\n var path = (0, _PathUtils.createPath)(entry);\n\n var key = void 0,\n state = void 0;\n if (entry.key) {\n key = entry.key;\n state = readState(key);\n }\n\n var init = (0, _PathUtils.parsePath)(path);\n\n return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);\n };\n\n var canGo = function canGo(n) {\n var index = current + n;\n return index >= 0 && index < entries.length;\n };\n\n var go = function go(n) {\n if (!n) return;\n\n if (!canGo(n)) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;\n\n return;\n }\n\n current += n;\n var currentLocation = getCurrentLocation();\n\n // Change action to POP\n history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n };\n\n var pushLocation = function pushLocation(location) {\n current += 1;\n\n if (current < entries.length) entries.splice(current);\n\n entries.push(location);\n\n saveState(location.key, location.state);\n };\n\n var replaceLocation = function replaceLocation(location) {\n entries[current] = location;\n saveState(location.key, location.state);\n };\n\n var history = (0, _createHistory2.default)(_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var _options = options,\n entries = _options.entries,\n current = _options.current;\n\n\n if (typeof entries === 'string') {\n entries = [entries];\n } else if (!Array.isArray(entries)) {\n entries = ['/'];\n }\n\n entries = entries.map(function (entry) {\n return (0, _LocationUtils.createLocation)(entry);\n });\n\n if (current == null) {\n current = entries.length - 1;\n } else {\n !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;\n }\n\n var storage = createStateStorage(entries);\n\n var saveState = function saveState(key, state) {\n return storage[key] = state;\n };\n\n var readState = function readState(key) {\n return storage[key];\n };\n\n return _extends({}, history, {\n canGo: canGo\n });\n};\n\nexports.default = createMemoryHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nvar BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);\n\nvar _RefreshProtocol = require('./RefreshProtocol');\n\nvar RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve clean URLs. You can force this\n * behavior using { forceRefresh: true } in options.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();\n var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;\n\n var getUserConfirmation = Protocol.getUserConfirmation,\n getCurrentLocation = Protocol.getCurrentLocation,\n pushLocation = Protocol.pushLocation,\n replaceLocation = Protocol.replaceLocation,\n go = Protocol.go;\n\n\n var history = (0, _createHistory2.default)(_extends({\n getUserConfirmation: getUserConfirmation }, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var listenerCount = 0,\n stopListener = void 0;\n\n var startListener = function startListener(listener, before) {\n if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);\n\n var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopListener();\n };\n };\n\n var listenBefore = function listenBefore(listener) {\n return startListener(listener, true);\n };\n\n var listen = function listen(listener) {\n return startListener(listener, false);\n };\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen\n });\n};\n\nexports.default = createBrowserHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _HashProtocol = require('./HashProtocol');\n\nvar HashProtocol = _interopRequireWildcard(_HashProtocol);\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultQueryKey = '_k';\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!' + path;\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substring(1) : path;\n }\n },\n noslash: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '/' ? path.substring(1) : path;\n },\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar createHashHistory = function createHashHistory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n var queryKey = options.queryKey,\n hashType = options.hashType;\n\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\\'t ' + 'use location state if you don\\'t want a key in your URL query string') : void 0;\n\n if (typeof queryKey !== 'string') queryKey = DefaultQueryKey;\n\n if (hashType == null) hashType = 'slash';\n\n if (!(hashType in HashPathCoders)) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Invalid hash type: %s', hashType) : void 0;\n\n hashType = 'slash';\n }\n\n var pathCoder = HashPathCoders[hashType];\n\n var getUserConfirmation = HashProtocol.getUserConfirmation;\n\n\n var getCurrentLocation = function getCurrentLocation() {\n return HashProtocol.getCurrentLocation(pathCoder, queryKey);\n };\n\n var pushLocation = function pushLocation(location) {\n return HashProtocol.pushLocation(location, pathCoder, queryKey);\n };\n\n var replaceLocation = function replaceLocation(location) {\n return HashProtocol.replaceLocation(location, pathCoder, queryKey);\n };\n\n var history = (0, _createHistory2.default)(_extends({\n getUserConfirmation: getUserConfirmation }, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: HashProtocol.go\n }));\n\n var listenerCount = 0,\n stopListener = void 0;\n\n var startListener = function startListener(listener, before) {\n if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, pathCoder, queryKey);\n\n var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopListener();\n };\n };\n\n var listenBefore = function listenBefore(listener) {\n return startListener(listener, true);\n };\n\n var listen = function listen(listener) {\n return startListener(listener, false);\n };\n\n var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\n var go = function go(n) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n\n history.go(n);\n };\n\n var createHref = function createHref(path) {\n return '#' + pathCoder.encodePath(history.createHref(path));\n };\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n go: go,\n createHref: createHref\n });\n};\n\nexports.default = createHashHistory;","\"use strict\";\n\nexports.__esModule = true;\nvar loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var isSync = false,\n hasNext = false,\n doneArgs = void 0;\n\n var done = function done() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n isDone = true;\n\n if (isSync) {\n // Iterate instead of recursing if possible.\n doneArgs = args;\n return;\n }\n\n callback.apply(undefined, args);\n };\n\n var next = function next() {\n if (isDone) return;\n\n hasNext = true;\n\n if (isSync) return; // Iterate instead of recursing if possible.\n\n isSync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work(currentTurn++, next, done);\n }\n\n isSync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(undefined, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n };\n\n next();\n};","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.getUserConfirmation;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.go;\n }\n});\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n return (0, _LocationUtils.createLocation)(window.location);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n window.location.href = (0, _PathUtils.createPath)(location);\n return false; // Don't update location\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n window.location.replace((0, _PathUtils.createPath)(location));\n return false; // Don't update location\n};","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.getUserConfirmation;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.go;\n }\n});\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HashChangeEvent = 'hashchange';\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(pathCoder, queryKey) {\n var path = pathCoder.decodePath(getHashPath());\n var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey);\n\n var state = void 0;\n if (key) {\n path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey);\n state = (0, _DOMStateStorage.readState)(key);\n }\n\n var init = (0, _PathUtils.parsePath)(path);\n init.state = state;\n\n return (0, _LocationUtils.createLocation)(init, undefined, key);\n};\n\nvar prevLocation = void 0;\n\nvar startListener = exports.startListener = function startListener(listener, pathCoder, queryKey) {\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = pathCoder.encodePath(path);\n\n if (path !== encodedPath) {\n // Always be sure we have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var currentLocation = getCurrentLocation(pathCoder, queryKey);\n\n if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events\n\n prevLocation = currentLocation;\n\n listener(currentLocation);\n }\n };\n\n // Ensure the hash is encoded properly.\n var path = getHashPath();\n var encodedPath = pathCoder.encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n\n return function () {\n return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n };\n};\n\nvar updateLocation = function updateLocation(location, pathCoder, queryKey, updateHash) {\n var state = location.state,\n key = location.key;\n\n\n var path = pathCoder.encodePath((0, _PathUtils.createPath)(location));\n\n if (state !== undefined) {\n path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key);\n (0, _DOMStateStorage.saveState)(key, state);\n }\n\n prevLocation = location;\n\n updateHash(path);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location, pathCoder, queryKey) {\n return updateLocation(location, pathCoder, queryKey, function (path) {\n if (getHashPath() !== path) {\n pushHashPath(path);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0;\n }\n });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location, pathCoder, queryKey) {\n return updateLocation(location, pathCoder, queryKey, function (path) {\n if (getHashPath() !== path) replaceHashPath(path);\n });\n};","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline