{"version":3,"sources":["webpack:///./source/features/link-page/LinkPageStore.ts","webpack:///./source/features/events/EventsModel.ts","webpack:///./source/features/stacks/StackStore.ts","webpack:///./source/features/events/EventsStore.ts","webpack:///./source/features/valueStore/MemoryValueStore.ts","webpack:///./source/features/valueStore/index.ts","webpack:///./source/features/valueStore/ValueStoreFactory.ts","webpack:///./source/images/arrow-right-20-v1.svg","webpack:///./source/features/apps-index/AppsStore.ts","webpack:///./source/features/link-list/BulkLinkStore.ts","webpack:///./source/features/link-page/LinkSession.ts","webpack:///./source/library/ElementDataWatcher.ts","webpack:///./source/features/link-page/PagePickerElement.ts","webpack:///./source/features/link-page/SearchSummaryElement.ts","webpack:///./source/features/link-page/StackLinkElement.ts","webpack:///./source/library/SerializedEventQueue.ts","webpack:///./source/features/link-page/LinkPageElement.ts","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/ie11-custom-properties/ie11CustomProperties.js","webpack:///./source/library/Polyfills/classList.js","webpack:///./node_modules/element-remove/index.js","webpack:///./source/library/Polyfills/endsWith.js","webpack:///./source/library/Polyfills/startsWith.js","webpack:///./source/library/Polyfills/CustomEvent.js","webpack:///./source/library/Polyfills/objectAssign.js","webpack:///./source/library/Polyfills/closest.js","webpack:///./source/library/Polyfills/elementAppend.js","webpack:///./source/library/Polyfills/objectKeys.js","webpack:///./source/library/Polyfills/arrayKeys.js","webpack:///./source/library/Polyfills/arrayFrom.js","webpack:///./node_modules/eventlistener-polyfill/src/index.js","webpack:///./source/images/app-store-badge.svg","webpack:///./source/images/google-play-badge.svg","webpack:///./source/images/bookmarklet-logo.svg","webpack:///./source/images/chrome-logo.svg","webpack:///./source/images/Firefox-logo.svg","webpack:///./source/images/download-logo.svg","webpack:///./source/images/upload-logo.svg","webpack:///./source/images/ios-logo.svg","webpack:///./source/images/android-logo.svg","webpack:///./source/images/icons/divider-12.svg","webpack:///./source/images/no-results.svg","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./source/library/Polyfills/internetExplorerPolyfills.ts","webpack:///./node_modules/@capacitor-community/facebook-login/dist/esm/web.js","webpack:///./node_modules/@codetrix-studio/capacitor-google-auth/dist/esm/web.js","webpack:///./node_modules/@capgo/inappbrowser/dist/esm/web.js","webpack:///./node_modules/@capacitor/app/dist/esm/web.js","webpack:///./node_modules/navigator.sendbeacon/dist/navigator.sendbeacon.es.js","webpack:///./node_modules/html2canvas/dist/html2canvas.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/stacktrace-js/stacktrace.js"],"names":["eventTarget","_valueStore","resolve","setupInternalLinkUpdater","addEventListener","event","_sessionId","Date","getTime","this","registerEvents","LinkPageStore","_instance","type","listener","options","removeEventListener","emit","value","dispatchEvent","CustomEvent","detail","Object","assign","getPage","linkId","params","URLSearchParams","set","url","root","toString","fetch","get","authenticate","response","ok","json","undefined","page","getView","criteria","key","getKey","view","sessionId","dehydrateLinks","dehydrateSuccess","links","length","linkIds","user","stack","query","tags","join","hydrateLinks","hydrated","linkPage","specs","map","split","stacks","distinctBy","m","t","storedLinks","filter","push","linkPageClone","JSON","parse","stringify","link","id","statement","created","updated","deleted","instance","onRevision","revisions","forEach","revision","succeeded","entity","action","$type","before","simplified","Deleted","Updated","Created","Simplified","inbox","titleSort","a","b","atitle","title","toLowerCase","btitle","_urlProvider","reinitialize","registerForeignEvents","StackStore","initialized","Promise","wait","ready","bootstrapData","getAll","_stacks","whenSignedIn","getFrame","sort","indexOf","slug","private","getStackBySlug","userId","allLinksAsStack","author","getStackById","getStacks","slugs","lookupStack","Error","deleteStack","stackLocation","delete","updateStack","cloned","post","setJSON","alert","status","statusText","updatedStack","signalCreated","showNow","setTimeout","go","siteLocation","createStack","createdStack","fullRefresh","stacksLocation","result","oldStacks","slice","items","some","s","lookup","q","i","lookupStacks","getShortUrl","stackLocationUser","initialize","initial","currentSequence","Math","max","sequence","incomingRevisions","enrich","emitRevisions","_initializer","window","requestIdleCallback","getHistoricRevisions","EventsStore","callback","on","whenDate","when","Unknown","_values","valueStoreFactory","ValueStoreFactory","MemoryValueStore","module","exports","ressources","images","_packages","description","name","logo","AppsStore","all","packages","concat","selected","updateHandler","isSelected","removeHandler","deselect","deselectAll","deselected","document","body","BulkLinkStore","select","selectMany","missing","selectAllRequest","onChange","route","parseRoute","_currentStack","LinkPageElement","origin","PageLoad","dataElement","createElement","setAttribute","innerText","element","append","present","buildTitle","presentTitle","currentStack","LinkSession","create","path","startsWith","substring","parameters","parseInt","isNaN","hash","buildUrl","URL","searchParams","tag","rootElement","entityContentType","emitChanged","onChanged","offChanged","removeListener","cachedChecksum","checksum","getJSON","changeObserver","MutationObserver","mutations","mutation","script","call","addedNodes","localName","getAttribute","flushCache","data","observe","childList","cachedEntity","jsonElement","querySelector","parseEntity","innerHTML","destroy","disconnect","source","chk","len","charCodeAt","clickHandler","target","Element","pickPage","closest","routeAttribute","classList","contains","pages","currentPage","firstPage","lastPage","connectedCallback","hasAttribute","criteriaWatcher","pageCount","remove","range","allPages","Array","keys","slack","pageIndex","min","HTMLElement","customElements","define","UrlProvider","events","stop","cycle","cancelIdleCallback","idleCallback","clearTimeout","timerCallback","splice","timeout","add","escape","Formatting","htmlEscape","serializedEventQueue","SerializedEventQueue","showStackIndicators","render","insertAdjacentHTML","noResultsView","linkArea","linkPageView","linkRemovedHandler","linkAddedHandler","howToAddLinks","linkView","linkUpdatedHandler","toggleAttribute","selectAllHandler","from","querySelectorAll","itemSelectHandler","itemDeselectHandler","selectHandler","deselectHandler","removeAttribute","canEdit","collaboratorCount","linkCount","linkSkeletons","count","_","requestAnimationFrame","scrollCheck","currentUser","scrollToElement","disconnectedCallback","jumpToLinkId","location","Routing","newCriteria","newUrl","getArg","aArgs","aName","aDefaultValue","arguments","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","scheme","auth","host","port","urlGenerate","aParsedUrl","normalize","aPath","part","isAbsolute","parts","up","aRoot","aPathUrl","aRootUrl","joined","charAt","replace","relative","level","index","lastIndexOf","substr","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","_capitalize","str","toUpperCase","_getter","p","booleanProps","numericProps","stringProps","props","StackFrame","obj","prototype","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","exec","Boolean","j","n","parseFloat","isFinite","Number","k","String","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","column","original","addMapping","sources","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","has","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","toArray","encode","_generateSourcesContent","aSources","aSourceRoot","hasOwnProperty","toJSON","version","names","sourcesContent","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","rest","_array","_set","fromArray","aArray","aAllowDuplicates","size","getOwnPropertyNames","sStr","isDuplicate","idx","at","aIdx","testEl","style","setProperty","getPropertyValue","msMatchesSelector","matches","Observer","listeners","loaded","copyProperty","SVGStyleElement","defineProperty","sheet","styleSheets","ownerNode","styles_of_getter_properties","drawQueue","Set","collecting","drawing","regFindSetters","regFindGetters","regRuleIEGetters","regRuleIESetters","regPseudos","onElement","foundStyle","el","newCss","rewriteCss","cssText","found","parseRewrittenStyle","getters","addGetterElement","setters","addSetterElement","pseudos","hover","off","focus","active","CSSActive","e","activeElement","evt","createEvent","initEvent","uniqueCounter","observer","attributeName","drawTree","attributes","subtree","oldHash","newEl","getElementById","oldEl","descriptor","getOwnPropertyDescriptor","styleGetter","owningElement","originalGetComputed","getComputedStyle","apply","computedFor","StyleProto","CSSStyleDeclaration","oldGetP","property","lastPropertyServedBy","trim","undashed","ieProperty","iePropertyImportant","inheritingKeywords","register","inherits","parentNode","nodeType","ieCP_setters","tmpVal","styleComputeValueWidthVars","initialValue","inherit","revert","unset","oldSetP","prio","CSS","registerProperty","qsa","selector","elements","WeakMap","els","checkMutations","checkListener","checkListeners","inside","nodes","prop","to","desc","ieCP_polyfilled","ieCP_elementSheet","href","css","activateStyleElement","request","XMLHttpRequest","open","overrideMimeType","onload","responseText","send","$0","$1","$2","$3","$4","important","x","matchesGetters","propName","matchesSetters","propValue","rule","rules","addGettersSelector","selectorText","addSettersSelector","media","parentRule","mediaText","matchMedia","addListener","documentElement","redrawStyleSheets","properties","selectorAddPseudoListeners","unPseudo","drawElement","selectors","ieCPSelectors","pseudo","propVals","styles","ending","sel","drawTreeEvent","_drawElement","clear","ieCP_unique","runtimeStyle","valueWithVar","details","item","allByRoot","ieCP_styleEl","styleEl","head","appendChild","elementSetCss","valueWithVars","cb","char","insideCalc","openedLevel","lastPoint","newStr","fallback","variable","findVars","self","createElementNS","elemCtrProto","objCtr","strTrim","arrIndexOf","DOMEx","message","code","DOMException","checkTokenAndGetIndex","token","test","ClassList","elem","trimmedClasses","classes","_updateClassName","classListProto","classListGetter","tokens","l","toggle","force","method","classListPropDesc","enumerable","configurable","ex","number","__defineGetter__","testElement","createMethod","DOMTokenList","_toggle","CharacterData","DocumentType","writable","removeChild","endsWith","search","this_len","searchString","position","bubbles","cancelable","initCustomEvent","varArgs","nextSource","nextKey","webkitMatchesSelector","parentElement","Document","DocumentFragment","argArr","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","nextIndex","ary","done","toStr","isCallable","maxSafeInteger","toLength","fn","pow","floor","abs","toInteger","arrayLike","C","T","mapFn","kValue","A","passiveSupported","onceSupported","noop","passive","once","enhance","proto","originalAddEventListener","originalRemoveEventListener","originalCallback","optionsOrCapture","handleEvent","bind","capture","oldCallback","preventDefault","elementMap","optionsOctal","callbacks","callbackIsCapture","EventTarget","Text","HTMLDocument","Window","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","error","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","locationParts","pop","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","backtrace","opts","maxStackSize","curr","callee","RegExp","caller","SourceMap","_xdr","reject","req","onerror","onreadystatechange","readyState","_atob","b64str","atob","_ensureStackFrameIsLegit","stackframe","StackTraceGPS","sourceCache","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","sourceMapStart","encodedSource","xhrPromise","then","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","string","_parseJson","SourceMapConsumer","pinpoint","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","syntaxes","maxLines","commentPos","_findFunctionName","_ensureSupportedEnvironment","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_findSourceMappingURL","sourceMapConsumer","loc","mappedSource","_extractLocationInfoFromSourceMapSource","SourceNode","intToCharMap","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","c","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","sectionIndex","section","bias","every","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","mid","swap","y","doQuickSort","comparator","r","low","high","round","random","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","FacebookLoginWeb","loadScript","locale","FB","init","getElementsByTagName","defer","async","src","login","accessToken","authResponse","scope","permissions","logout","reauthorize","it","getLoginStatus","applicationId","declinedPermissions","expires","isExpired","lastRefresh","userID","fields","api","GoogleAuthWeb","super","platformJsLoaded","_options","clientId","scopes","grantOfflineAccess","_a","_b","metaClientId","getElementsByName","console","warn","gapiLoaded","gapiResolve","addUserChangeListener","gapi","load","clientConfig","client_id","plugin_name","auth2","serverAuthCode","needsOfflineAccess","getAuthInstance","signIn","googleUser","reloadAuthResponse","getUserFrom","access_token","idToken","id_token","refreshToken","signOut","listen","notifyListeners","isSignedIn","profile","getBasicProfile","email","getEmail","familyName","getFamilyName","givenName","getGivenName","getId","imageUrl","getImageUrl","getName","getAuthResponse","authentication","InAppBrowserWeb","log","AppWeb","handleVisibilityChange","isActive","hidden","unimplemented","_typeof","Symbol","iterator","sendBeacon","sync","xhr","ActiveXObject","withCredentials","setRequestHeader","responseType","val","Blob","isBlob","navigator","extendStatics","d","setPrototypeOf","__proto__","__extends","__","__assign","__awaiter","thisArg","_arguments","P","fulfilled","step","rejected","__generator","f","g","label","sent","trys","ops","verb","op","Bounds","w","h","left","top","width","height","fromClientRect","clientRect","parseBounds","getBoundingClientRect","toCodePoints","codePoints","extra","fromCodePoint","_i","codeUnits","codePoint","fromCharCode","chars","Uint8Array","TokenType","slice16","start","Uint16Array","Trie","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","UnicodeTrie","buffer","encoded1","encoded2","encoded3","encoded4","bufferLength","ArrayBuffer","bytes","view32","polyUint32Array","Uint32Array","view16","polyUint16Array","headerLength","ceil","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","currentIndex","classTypes","current","prev","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","prevIndex","cssFormattedClasses","lineBreak","wordBreak","types","categories","classType","codePointsToCharacterClasses","isLetterNumber","letterNumber","Break","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","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","Tokenizer","_value","write","read","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","HASH_TOKEN","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","AT_KEYWORD_TOKEN","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","DELIM_TOKEN","delta","digits","questionMarks","start_1","UNICODE_RANGE_TOKEN","endDigits","consumeUrlToken","FUNCTION_TOKEN","IDENT_TOKEN","URL_TOKEN","stringToken","STRING_TOKEN","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","endingCodePoint","consumeNumber","repr","unit","DIMENSION_TOKEN","PERCENTAGE_TOKEN","NUMBER_TOKEN","hex","hexCodePoint","isSurrogateCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","FUNCTION","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","angle","PI","isAngle","parseNamedSide","ident","deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","pack","namedColor","COLORS","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","getTokenColorValue","rgb","hue2rgb","t1","t2","hue","PropertyDescriptorParsingType","BACKGROUND_CLIP","hsl","saturation","lightness","hsla","rgba","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","CSSImageType","CSSRadialShape","CSSRadialExtent","backgroundClip","prefix","LIST","PADDING_BOX","CONTENT_BOX","BORDER_BOX","backgroundColor","TYPE_VALUE","format","parseColorStop","color$1","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","reduce","stat","cx","cy","optimumDistance","optimumCorner","prefixLinearGradient","angle$1","firstToken","colorStop","LINEAR_GRADIENT","isGreenPixel","createForeignObjectSVG","xmlns","svg","foreignObject","setAttributeNS","loadSerializedSVG","img","Image","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","createRange","TEST_HEIGHT","display","selectNode","rangeBounds","rangeHeight","testRangeBounds","canvas","ctx","getContext","drawImage","toDataURL","testSVG","fillStyle","fillRect","greenImageSrc","getImageData","backgroundImage","catch","testForeignObject","crossOrigin","Logger","enabled","now","debug","info","instances","getInstance","CacheStorage","_caches","Cache","cache","getOrigin","_link","protocol","hostname","isSameOrigin","_origin","setContext","_current","attachInstance","detachInstance","_cache","addImage","isBlobImage","isRenderable","loadImage","useCORS","useProxy","_this","isInlineImage","SUPPORT_CORS_IMAGES","proxy","SUPPORT_CORS_XHR","allowTaint","isInlineBase64Image","complete","imageTimeout","SUPPORT_RESPONSE_TYPE","reader_1","FileReader","readAsDataURL","timeout_1","ontimeout","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","prefixRadialGradient","shape","CIRCLE","FARTHEST_CORNER","isColorStop","acc","ELLIPSE","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","RADIAL_GRADIENT","BACKGROUND_REPEAT","image","image_1","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isAtPosition_1","isSupportedImage","backgroundOrigin","backgroundPosition","BACKGROUND_SIZE","backgroundRepeat","parseBackgroundRepeat","NO_REPEAT","REPEAT_X","REPEAT_Y","REPEAT","BORDER_STYLE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","FLOAT","borderStyleForSide","IDENT_VALUE","NONE","SOLID","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","VALUE","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","LINE_BREAK","float","LEFT","RIGHT","INLINE_START","INLINE_END","letterSpacing","LIST_STYLE_POSITION","STRICT","NORMAL","lineHeight","TOKEN_VALUE","listStyleImage","LIST_STYLE_TYPE","listStylePosition","INSIDE","OUTSIDE","OVERFLOW","listStyleType","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","marginForSide","marginTop","marginRight","marginBottom","marginLeft","OVERFLOW_WRAP","overflow","HIDDEN","SCROLL","AUTO","VISIBLE","TEXT_ALIGN","overflowWrap","BREAK_WORD","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","POSITION","textAlign","CENTER","TEXT_TRANSFORM","RELATIVE","ABSOLUTE","FIXED","STICKY","STATIC","textShadow","shadow","offsetX","offsetY","blur","VISIBILITY","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","WORD_BREAK","visibility","COLLAPSE","FONT_STYLE","BREAK_ALL","KEEP_ALL","zIndex","auto","order","opacity","textDecorationColor","textDecorationLine","fontFamily","isStringToken$1","fontSize","fontWeight","fontVariant","PseudoElementType","fontStyle","OBLIQUE","ITALIC","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","quotes","open_1","close_1","close","getQuote","depth","quote","boxShadow","spread","inset","CSSParsedDeclaration","declaration","cssFloat","overflowTuple","overflowX","overflowY","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","parser","length_1","value_1","ElementContainer","textNodes","isHTMLElementNode","bounds","TextBounds","text","getWrapperBounds","ownerDocument","wrapper","cloneNode","replaceChild","firstChild","getRangeBounds","setStart","setEnd","breakText","breakWords","bk","breaker","forbiddenBreakpoints","lastEnd","LineBreaker","words","TextContainer","transform$1","textBounds","textList","SUPPORT_RANGE_BOUNDS","replacementNode","splitText","parseTextBounds","capitalize","p1","p2","ImageElementContainer","_super","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","PASSWORD","InputElementContainer","input","checked","placeholder","SelectElementContainer","option","selectedIndex","TextareaElementContainer","parseColor","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","childNode","nextNode","nextSibling","isTextNode","isElementNode","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","TEXT_NODE","ELEMENT_NODE","isStyleElement","isScriptElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","createAdditiveCounter","symbols","suffix","createCounterText","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","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","userAgent","clonedReferenceElement","nodeName","fonts","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createStyleClone","cssRules","textContent","inlineImages","clonedCanvas","clonedCtx","putImageData","clone","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","child","ignoreElements","copyStyles","insertBefore","after","AFTER","copyCSSStyles","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","className","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","PathType","cloneIframeContainer","border","scrolling","interval","setInterval","childNodes","clearInterval","internalSubset","publicId","systemId","createStyles","CORNER","equalPath","Vector","VECTOR","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","BEZIER_CURVE","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderBox","getCurvePoints","TOP_LEFT","topRightBorderBox","TOP_RIGHT","bottomRightBorderBox","BOTTOM_RIGHT","bottomLeftBorderBox","BOTTOM_LEFT","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","TransformEffect","ClipEffect","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","parentStack","effects","borderBox","paddingBox","getParentEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","order_1","index_1","index_2","processListItems","owner","numbering","listValue","createPathFromCurves","outer1","inner1","outer2","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","CONTAIN","COVER","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","repeat","FontMetrics","_data","_document","parseMetrics","span","margin","padding","verticalAlign","baseline","offsetTop","middle","getMetrics","CanvasRenderer","_activeEffects","scale","fontMetrics","translate","textBaseline","applyEffects","popEffect","effect","applyEffect","save","isTransformEffect","isClipEffect","clip","restore","renderStack","globalAlpha","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","renderTextNode","font","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","renderReplacedElement","box","windowWidth","windowHeight","fill","beginPath","arc","isTextInputElement","canvasTextAlign","computeLineHeight","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","_loop_1","this_1","x0","x1","y0","y1","gradient_1","top_1","rx","ry","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","background","isRadialGradient","gradient","calculateRadius","createRadialGradient","renderBorder","curvePoints","borderSide","parsePathForBorder","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","calculateContentBoxPath","ForeignObjectRenderer","loadSerializedSVG$1","parseColor$1","renderElement","instanceName","resourceOptions","defaultOptions","windowBounds","documentCloner","clonedElement","bgColor","defaultBackgroundColor","renderOptions","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","parseDocumentSize","logging","removeContainer","foreignObjectRendering","devicePixelRatio","innerWidth","innerHeight","factory","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","deprecationMessage","output","extend","merge","base","childP","baseP","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","camelProp","_uniqueId","getWindowForElement","doc","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","enable","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","getAngle","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","clientX","clientY","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","supports","getTouchActionProps","TouchAction","compute","actions","update","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","process","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","stopped","curRecognizer","existing","gestureEvent","gesture","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","ErrorStackParser","StackGenerator","_generateError","err","_merge","_isShapedLikeParsableError","_filtered","stackframes","fromError","generateArtificially","getSync","gps","sf","resolveOriginal","stackFrames","instrument","errback","__stacktraceOriginalFn","instrumented","deinstrument","report","errorMsg","requestOptions","headers","header","reportPayload"],"mappings":"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ACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGJ2b,GAAS,CACTthB,SAAU,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEJ2F,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGJwb,GAAW,CACXnhB,SAAU,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEJ2F,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGJwqB,GAAwB,SAAU3+D,EAAOqR,EAAKnI,EAAK01D,EAASxzC,EAAUyzC,GACtE,OAAI7+D,EAAQqR,GAAOrR,EAAQkJ,EAChB41D,GAAkB9+D,EAAOorB,EAAUyzC,EAAO98D,OAAS,GAEtD68D,EAAQpwB,SAASsV,QAAO,SAAUpuB,EAAQqpC,EAASpoD,GACvD,KAAO3W,GAAS++D,G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","file":"94fe7f72f2f6013b3c67.stacks.bundle.js","sourcesContent":["import { UrlProvider } from \"../../library/UrlProvider\"\nimport { Request, Pipeline } from \"../../library/HTTP\"\nimport { Collection } from \"../../library/System\";\nimport { LinkPage, LinkPageCriteria } from \"./LinkPageModel\";\nimport { Link } from \"../links/LinkStore\";\nimport { EventsStore } from \"features/events/EventsStore\";\nimport { ClassTypename, Typename } from \"lib/Types\";\nimport { Simplified } from \"features/events/EventsModel\";\nimport EventTarget from \"@ungap/event-target\";\nimport { cityline } from \"features/cityline\";\nimport { valueStoreFactory } from \"features/valueStore\"\n\ninterface EventMap {\n \"link-added\": Link;\n \"link-removed\": Link;\n \"link-updated\": Link;\n}\n\n@ClassTypename(\"LinkPageStore\")\nexport class LinkPageStore {\n private eventTarget = new EventTarget();\n private static _instance = new LinkPageStore();\n private _sessionId: number;\n private _valueStore = valueStoreFactory.resolve();\n private constructor() {\n this._sessionId = new Date().getTime();\n this.registerEvents();\n this.setupInternalLinkUpdater();\n }\n static get instance() { return LinkPageStore._instance; }\n\n public addEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n\n public removeEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.removeEventListener(type, listener, options);\n }\n\n private emit, T extends EventMap>(type: K, value: T[K]) {\n return this.eventTarget.dispatchEvent(new CustomEvent(type, { detail: Object.assign({}, value, { [Typename]: LinkPageStore[Typename] }) }));\n }\n\n // If anything is stale, all is stale\n // when stale we rerun and raise an event\n // if not stale we trust what we have\n // stacks comes with a checksum, if said checksum is a match we update sesisonid == not stale\n public async getPage(linkId: string): Promise {\n const params = new URLSearchParams();\n params.set(\"linkId\", linkId);\n\n const url = `${new UrlProvider().root}/api/link-page/index?${params.toString()}`;\n const response = await new Pipeline().fetch(url, Request.get.authenticate());\n\n if (!response.ok) // how do we do this?\n return undefined;\n\n const index = await response.json() as IndexResponse;\n return index.page;\n }\n\n // in the future we might get more clever and update views, for now we just throw them away\n private setupInternalLinkUpdater = () => {\n this.addEventListener(\"link-added\", (event: CustomEvent) => {\n this._sessionId = new Date().getTime();\n });\n this.addEventListener(\"link-updated\", (event: CustomEvent) => {\n this._sessionId = new Date().getTime();\n });\n this.addEventListener(\"link-removed\", (event: CustomEvent) => {\n this._sessionId = new Date().getTime();\n });\n }\n\n // If anything is stale, all is stale\n // when stale we rerun and raise an event\n // if not stale we trust what we have\n // stacks comes with a checksum, if said checksum is a match we update sesisonid == not stale\n public async getView(criteria: LinkPageCriteria): Promise {\n const key = this.getKey(criteria);\n \n let view = await this._valueStore.get(key) as LinkPage;\n\n let dehydrateSuccess: boolean;\n if (view && view.sessionId === this._sessionId) \n dehydrateSuccess = await this.dehydrateLinks(view);\n \n if (!dehydrateSuccess || !view || view.sessionId !== this._sessionId || (view.links || []).length !== (view.linkIds || []).length) {\n const params = new URLSearchParams();\n params.set(\"user\", criteria.user);\n params.set(\"page\", criteria.page.toString());\n\n if (criteria.stack)\n params.set(\"stack\", criteria.stack);\n\n if (criteria.query)\n params.set(\"query\", criteria.query);\n\n if (criteria.tags)\n params.set(\"tags\", criteria.tags.join(\",\"));\n\n const url = `${new UrlProvider().root}/api/link-page?${params.toString()}`;\n const response = await new Pipeline().fetch(url, Request.get.authenticate());\n\n if (!response.ok) // how do we do this?\n return undefined;\n\n view = await response.json() as LinkPage;\n\n const hydrated = await this.hydrateLinks(view);\n\n hydrated.sessionId = this._sessionId;\n\n await this._valueStore.set(key, hydrated);\n }\n\n return view;\n }\n\n private async dehydrateLinks(linkPage: LinkPage) : Promise {\n linkPage.links = [];\n\n const specs = linkPage.linkIds.map(linkId => {\n const parts = linkId.split(\"/\");\n return {\n stack: parts[1],\n linkId: linkId\n };\n });\n\n const stacks = Collection.distinctBy(specs.map(m => m.stack), t => t);\n for (const stack of stacks) {\n const key = `stack-${stack}`;\n const storedLinks: StoredLinks = await this._valueStore.get(key) || { user: \"modec\", stack: stack, links: {}, sessionId: undefined };\n\n if (storedLinks?.sessionId !== this._sessionId) {\n return false;\n }\n\n for (const linkId of specs.filter(m => m.stack === stack).map(m => m.linkId)) {\n if (storedLinks.links[linkId])\n linkPage.links.push(storedLinks.links[linkId]);\n }\n }\n\n return true;\n }\n\n // only if own?\n // If we don't seperate links out, can we still update them?\n // how?\n // If sessionId != current sessionid then stale\n private async hydrateLinks(linkPage: LinkPage): Promise {\n const linkPageClone = JSON.parse(JSON.stringify(linkPage)) as LinkPage;\n const links = linkPageClone.links;\n\n const stacks = Collection.distinctBy(links.map(m => m.stack), t => t);\n\n for (const stack of stacks) {\n const key = `stack-${stack}`;\n let storedLinks: StoredLinks = await this._valueStore.get(key);\n\n if (!storedLinks || storedLinks.sessionId !== this._sessionId)\n storedLinks = { user: \"modec\", stack: stack, links: {}, sessionId: this._sessionId }\n\n for (const link of links) {\n storedLinks.links[link.id] = link;\n }\n\n storedLinks.sessionId = this._sessionId;\n await this._valueStore.set(key, storedLinks);\n }\n\n linkPageClone.linkIds = linkPageClone.links.map(m => m.id);\n linkPageClone.links = undefined;\n return linkPageClone;\n }\n\n private getKey(statement: LinkPageCriteria) {\n return `link-view-${statement.stack}-${statement.page}${statement.query ? `-${statement.query}` : \"\"}${statement.tags ? `-${statement.tags.join(\";\")}` : \"\"}`;\n }\n\n private registerEvents() {\n cityline.addEventListener(\"links\", (event: CustomEvent) => {\n for(const link of event?.detail?.created || []) \n this.emit(\"link-added\", link);\n\n for(const link of event?.detail?.updated || []) \n this.emit(\"link-updated\", link);\n\n for(const link of event?.detail?.deleted || []) \n this.emit(\"link-removed\", link);\n });\n\n EventsStore.instance.onRevision(revisions => {\n revisions.forEach(revision => {\n if (revision.type !== \"link\" || !revision.succeeded || !revision.entity)\n return;\n\n if (revision.action.$type === \"moveFromStackToStackCommand\") {\n this.emit(\"link-removed\", revision.action.before);\n this.emit(\"link-added\", revision.entity);\n return;\n }\n\n if (revision.action.$type === \"copyFromStackToStackCommand\") {\n this.emit(\"link-added\", revision.entity);\n return;\n }\n\n switch (revision.simplified) {\n case Simplified.Deleted:\n this.emit(\"link-removed\", revision.entity);\n break;\n case Simplified.Updated:\n this.emit(\"link-updated\", revision.entity);\n break;\n case Simplified.Created:\n this.emit(\"link-added\", revision.entity);\n }\n });\n });\n }\n}\n\n\nexport interface StoredLinks {\n user: string;\n stack: string;\n links: { [id: string]: Link; }; // but we typically only have first page?\n\n checksum?: string;\n sessionId: number;\n}\n\ninterface IndexResponse {\n index: number;\n page: number;\n}\n\ninterface LinkMessage {\n created?: Link[];\n updated?: Link[];\n deleted?: Link[];\n}","import { Link } from \"features/links\";\n\nexport type ErrorReason = \"unknown\" | \"documentAlreadyExists\"\nexport type Type = \"link\" | \"stack\";\nexport enum Simplified { Unknown, Updated, Created, Deleted };\nexport type CommandType = AddTagsToLinkCommand | MoveFromStackToStackCommand | CreateCommand | AddingLinkCommand |\n EnrichedCommand | DeleteCommand | CopyFromStackToStackCommand | UpdateCommand | RefreshedMetadataCommand | \n EnrichedManyCommand;\n\ninterface AddTagsToLinkCommand {\n $type: \"addTagsToLinkCommand\";\n tags: string[];\n}\ninterface MoveFromStackToStackCommand {\n $type: \"moveFromStackToStackCommand\";\n sourceStack: string;\n destinationStack: string;\n before: Link;\n}\n\ninterface CopyFromStackToStackCommand {\n $type: \"copyFromStackToStackCommand\";\n sourceStack: string;\n destinationStack: string;\n before: Link;\n}\n\ninterface CreateCommand {\n $type: \"createCommand\";\n}\n\ninterface DeleteCommand {\n $type: \"deleteCommand\";\n}\n\ninterface EnrichedCommand {\n $type: \"enrichedCommand\";\n}\n\ninterface EnrichedManyCommand {\n $type: \"enrichedManyCommand\";\n count: number;\n}\n\ninterface UpdateCommand {\n $type: \"updateCommand\";\n}\n\n\ninterface AddingLinkCommand {\n $type: \"addingLinkCommand\";\n}\n\ninterface RefreshedMetadataCommand{\n $type: \"refreshedMetadataCommand\";\n}\n\nexport interface IRevision {\n type: Type;\n sequence: number;\n id: string;\n action: CommandType;\n when: string;\n whenDate?: Date;\n actor: string;\n succeeded: boolean;\n reason: ErrorReason;\n what: string;\n entity: Link;\n simplified: Simplified;\n initiator?: AuthorViewModel\n}\n\nexport interface AuthorViewModel {\n userId?: string;\n}\n\nexport interface IEventViewModel {\n stackCounts: { [key: string]: number };\n latest: number;\n isEmpty: boolean;\n revisions: IRevision[];\n eventstream: { [key: string]: EventPayload }\n}\n\nexport interface EventPayload {\n marker: any;\n payload: any;\n}","import { AuthenticationStore } from \"features/authentication\";\nimport { DOM } from \"lib/DOM\";\nimport { Delay } from \"lib/System\"\nimport { Link } from \"features/links\"\nimport { PagedResult } from \"lib/Model\";\nimport { Request, Pipeline } from \"lib/HTTP\"\nimport { Routing } from \"lib/Routing\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { cityline } from \"features/cityline\";\nimport { ClassTypename, Typename } from \"lib/Types\";\nimport EventTarget from \"@ungap/event-target\";\n\ninterface EventMap {\n \"stack-added\": Linkstack;\n \"stack-removed\": Linkstack;\n \"stack-updated\": Linkstack;\n}\n\n/*\n Actions on stacks\n Events on stacks\n Maintains a list of stacks\n*/\n@ClassTypename(\"StackStore\")\nexport class StackStore {\n private static _instance = new StackStore();\n private _stacks: Linkstack[];\n private eventTarget = new EventTarget();\n private _urlProvider: UrlProvider;\n public inbox = \"inbox\";\n private initialized: Promise;\n\n private constructor() {\n this._urlProvider = new UrlProvider\n this.reinitialize();\n this.registerForeignEvents();\n }\n\n static get instance(): StackStore {\n return StackStore._instance;\n }\n\n public addEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n\n public removeEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.removeEventListener(type, listener, options);\n }\n\n private emit, T extends EventMap>(type: K, value: T[K]) {\n return this.eventTarget.dispatchEvent(new CustomEvent(type, { detail: Object.assign({}, value, { [Typename]: StackStore[Typename] }) }));\n }\n\n private reinitialize() {\n this.initialized = new Promise(async resolve => {\n await Delay.wait(10);\n await DOM.ready();\n await this.bootstrapData();\n resolve();\n });\n }\n\n private titleSort = (a: Linkstack, b: Linkstack) => {\n const atitle = a.title ? a.title.toLowerCase() : \"\";\n const btitle = b.title ? b.title.toLowerCase() : \"\";\n return atitle === btitle ? 0 : +(atitle > btitle) || -1;\n };\n\n async getAll() {\n await this.initialized;\n return this._stacks;\n }\n\n private async bootstrapData() {\n await AuthenticationStore.instance.whenSignedIn();\n this._stacks = await cityline.getFrame(\"stacks\");\n this._stacks = this._stacks.sort(this.titleSort);\n }\n\n private registerForeignEvents() {\n cityline.addEventListener(\"stacks\", (event: CustomEvent) => {\n if (!this._stacks)\n return;\n\n event.detail.forEach(stack => {\n\n if (this._stacks.map(m => m.id).indexOf(stack.id) === -1)\n this.emit(\"stack-added\", stack);\n else\n this.emit(\"stack-updated\", stack);\n });\n });\n }\n\n public get allLinksAsStack(): Linkstack {\n return {\n title: \"All stacks\",\n slug: \"links\",\n // id: string;\n // description?: string;\n // siteLocation?: string;\n // location?: string;\n // author?: Author;\n // preview?: string;\n // smallPreview?: string;\n // feedSiteLocation?: string;\n // created?: string;\n // linkCount?: number;\n // canEdit?: boolean;\n // query?: string;\n private: true\n // links?: LinkResult;\n // collaboratorCount?: number;\n };\n\n }\n\n public async getStackBySlug(userId: string, slug: string): Promise {\n await this.initialized;\n\n if (slug === \"links\")\n return this.allLinksAsStack;\n\n return this._stacks.filter(m => m.author.userId === userId && m.slug === slug)[0];\n }\n\n public async getStackById(id: string): Promise {\n await this.initialized;\n return this._stacks.filter(m => m.id === id)[0];\n }\n\n public async getStacks(slugs: string[]): Promise {\n await this.initialized;\n return this._stacks.filter(stack => slugs.indexOf(stack.slug) !== -1);\n }\n\n public async lookupStack(slug: string): Promise {\n if (!slug || slug === \"\")\n throw new Error(\"Slug must be provided to lookup a stack.\");\n\n slug = slug.toLowerCase();\n\n await this.initialized;\n const stack = this._stacks.filter(stack => slug === stack.slug)[0];\n return stack;\n }\n\n public async deleteStack(slug: string): Promise {\n const stack = this._stacks.filter(m => m.slug === slug)[0];\n const action = await this._urlProvider.stackLocation(slug);\n const response = await new Pipeline().fetch(action, Request.delete.authenticate());\n\n this._stacks = this._stacks.filter(m => m.id !== stack.id);\n\n if (response.ok)\n this.emit(\"stack-removed\", stack);\n\n return response.ok;\n }\n\n public async updateStack(stack: Linkstack): Promise {\n const action = await this._urlProvider.stackLocation(stack.slug);\n\n // clone stack\n const cloned = JSON.parse(JSON.stringify(stack)) as Linkstack;\n cloned.links = undefined;\n\n const response = await new Pipeline().fetch(action, Request.post.authenticate().setJSON(cloned));\n\n if (!response.ok) {\n alert(`Unable to update stack. (${response.status}, ${response.statusText})`);\n return;\n }\n\n const updatedStack = await response.json() as Linkstack;\n this._stacks = this._stacks.filter(m => m.id !== updatedStack.id);\n this._stacks.push(stack);\n this._stacks = this._stacks.sort(this.titleSort);\n\n this.emit(\"stack-updated\", updatedStack);\n }\n\n public signalCreated(stack: Linkstack, showNow = true) {\n this._stacks.push(stack);\n this._stacks = this._stacks.sort(this.titleSort);\n\n this.emit(\"stack-added\", stack);\n\n if (showNow)\n setTimeout(() => Routing.instance.go(stack.siteLocation));\n }\n\n public async createStack(stack: Linkstack, showNow = true) {\n const action = await this._urlProvider.stackLocation(\"\");\n\n const response = await new Pipeline().fetch(action, Request.post.authenticate().setJSON(stack));\n const createdStack = await response.json() as Linkstack;\n this.signalCreated(createdStack, showNow);\n }\n\n\n\n public async fullRefresh(): Promise {\n const action = await this._urlProvider.stacksLocation();\n const response = await new Pipeline().fetch(action, Request.get.authenticate());\n const result = await response.json() as PagedResult;\n\n const oldStacks = this._stacks.slice(0);\n this._stacks = result.items;\n this._stacks.forEach(stack => {\n if (oldStacks.some(s => s.id === stack.id))\n this.emit(\"stack-updated\", stack);\n else\n this.emit(\"stack-added\", stack);\n });\n }\n\n public async lookup(q?: string): Promise {\n await this.initialized;\n let result = this._stacks;\n\n if (q)\n result = result.filter(i => i.title && i.title.toLowerCase().indexOf(q.toLowerCase()) !== -1)\n\n return result;\n }\n\n public async lookupStacks(q = \"\"): Promise> {\n let action = await this._urlProvider.stacksLocation();\n\n if (q)\n action += `?q=${q}`;\n\n const response = await new Pipeline().fetch(action, Request.get.authenticate());\n return await response.json() as PagedResult;\n }\n\n public async getShortUrl(stack: Linkstack): Promise {\n const response = await new Pipeline().fetch(`${this._urlProvider.stackLocationUser(stack.author.userId, stack.slug)}/_shorturl`, Request.post.authenticate().setJSON(stack));\n return await response.json();\n }\n}\n\nexport interface Linkstack {\n title: string;\n slug?: string;\n id?: string;\n description?: string;\n siteLocation?: string;\n location?: string;\n author?: Author;\n preview?: string;\n smallPreview?: string;\n feedSiteLocation?: string;\n created?: string;\n linkCount?: number;\n canEdit?: boolean;\n query?: string;\n private: boolean;\n links?: LinkResult;\n collaboratorCount?: number;\n}\n\nexport interface Author {\n userId: string;\n username: string;\n siteLocation: string;\n avatarLocation: string;\n}\n\n\nexport interface LinkResult {\n items: Link[];\n nextPageLocation?: string;\n page: number;\n stackTotal: number;\n successfulIndexed: number;\n total: number;\n}\n\n","import { IRevision, Simplified } from \"features/events/EventsModel\";\nimport { EventEmitter } from \"events\";\nimport { cityline } from \"features/cityline\";\n\nexport class EventsStore extends EventEmitter {\n private static _instance: EventsStore = new EventsStore();\n private currentSequence: number;\n private _initializer: Promise;\n \n private constructor() {\n super();\n this._initializer = this.initialize();\n window.requestIdleCallback(async () => {\n await this._initializer;\n }); \n }\n\n async getHistoricRevisions() : Promise{\n return await cityline.getFrame(\"link-revisions\");\n }\n\n private initialize = async () => {\n const initial = await cityline.getFrame(\"link-revisions\");\n this.currentSequence = Math.max(...initial.map(m => m.sequence));\n\n cityline.addEventListener(\"link-revisions\", (event: CustomEvent) => {\n\n let incomingRevisions = event.detail;\n if (this.currentSequence) {\n incomingRevisions = incomingRevisions.filter(m => m.sequence > this.currentSequence);\n }\n\n if (incomingRevisions.length === 0)\n return;\n\n this.currentSequence = Math.max(...incomingRevisions.map(m => m.sequence));\n\n const revisions = this.enrich(incomingRevisions);\n this.emitRevisions(revisions);\n });\n }\n\n static get instance(): EventsStore {\n return EventsStore._instance;\n }\n\n private emitRevisions(revision: IRevision[]) {\n this.emit(\"Revision\", revision);\n }\n\n onRevision(callback: (revision: IRevision[]) => void) {\n this.on(\"Revision\", callback);\n }\n\n private enrich(revisions: IRevision[]) {\n revisions.forEach(revision => {\n revision.whenDate = new Date(revision.when);\n\n switch (revision.action.$type) {\n case \"moveFromStackToStackCommand\":\n case \"addingLinkCommand\":\n revision.simplified = Simplified.Created;\n break;\n case \"deleteCommand\":\n revision.simplified = Simplified.Deleted;\n break;\n case \"updateCommand\":\n case \"enrichedCommand\":\n case \"createCommand\":\n case \"addTagsToLinkCommand\":\n case \"refreshedMetadataCommand\":\n revision.simplified = Simplified.Updated;\n break;\n default:\n revision.simplified = Simplified.Unknown;\n break;\n }\n });\n return revisions;\n }\n}\n","export class MemoryValueStore {\n private _values: { [id: string] : any; } = {};\n\n get(key: string) : Promise { \n return Promise.resolve(this._values[key]);\n }\n\n set(key: string, value: TValue): Promise { \n this._values[key] = value;\n return Promise.resolve();\n }\n}","import { ValueStoreFactory } from \"./ValueStoreFactory\";\n\nconst valueStoreFactory = ValueStoreFactory.instance;\nexport { valueStoreFactory };","import { MemoryValueStore } from \"./MemoryValueStore\";\n\nexport class ValueStoreFactory {\n private static _instance = new ValueStoreFactory();\n\n public static get instance() { \n return ValueStoreFactory._instance;\n }\n\n public resolve(): ValueStore { \n return new MemoryValueStore();\n }\n}\n\nexport interface ValueStore {\n get(key: string): Promise;\n set(key: string, value: TValue): Promise;\n}\n\n//import { get, set } from \"idb-keyval/dist/esm-compat\";","module.exports = \"\"","import { Package } from \"features/packages/Package\";\nimport { cityline } from \"features/cityline\";\n\nexport class AppsStore {\n private constructor() {}\n private static _instance = new AppsStore();\n static get instance() { return AppsStore._instance };\n\n public ressources = {\n \"apple-app-store-badge\": require(\"image/app-store-badge.svg\"),\n \"google-play-badge\": require(\"image/google-play-badge.svg\")\n }\n\n private images = {\n \"bookmarklet-logo\": require(\"!!raw-loader!image/bookmarklet-logo.svg\"),\n \"chrome-logo\": require(\"!!raw-loader!image/chrome-logo.svg\"),\n \"firefox-logo\": require(\"!!raw-loader!image/Firefox-logo.svg\"),\n \"download-logo\": require(\"!!raw-loader!image/download-logo.svg\"),\n \"upload-logo\": require(\"!!raw-loader!image/upload-logo.svg\"),\n \"ios-logo\": require(\"!!raw-loader!image/ios-logo.svg\"),\n \"android-logo\": require(\"!!raw-loader!image/android-logo.svg\"),\n };\n\n private _packages: Package[] = [\n {\n slug: \"ios\",\n description: \"Manage and add links via iPhone or iPad\",\n name: \"Linkstacks for iOS\",\n logo: \"ios-logo\"\n },\n {\n slug: \"android\",\n description: \"Manage and add links via Android devices\",\n name: \"Linkstacks for Android\",\n logo: \"android-logo\"\n }\n ];\n\n public logo(key: string){\n return this.images[key];\n }\n\n \n\n\n async all() : Promise {\n const packages = await cityline.getFrame(\"packages\");\n return this._packages.concat(packages);\n }\n}","import { Link } from \"features/links\";\nimport EventTarget from \"@ungap/event-target\";\nimport { LinkPageStore } from \"features/link-page/LinkPageStore\";\n\ninterface EventMap {\n \"selected\": CustomEvent;\n \"deselected\": CustomEvent;\n \"select-started\": Event;\n \"select-ended\": Event;\n \"select-all-requested\": Event;\n}\n\nexport class BulkLinkStore { \n private eventTarget = new EventTarget();\n private static _instance = new BulkLinkStore();\n static get instance() { return BulkLinkStore._instance; }\n private selected: Link[] = [];\n \n private constructor() {\n LinkPageStore.instance.addEventListener(\"link-updated\", this.updateHandler);\n LinkPageStore.instance.addEventListener(\"link-removed\", this.removeHandler);\n document.body.addEventListener(\"app-changed\", this.deselectAll);\n }\n\n private updateHandler = (event: CustomEvent) => {\n const link = event.detail;\n if (!this.isSelected(link.id))\n return;\n\n this.selected = this.selected.filter(i => i.id !== link.id);\n this.selected.push(link);\n }\n\n private removeHandler = (event: CustomEvent) => {\n const link = event.detail;\n if (!this.isSelected(link.id))\n return;\n \n this.selected = this.selected.filter(i => i.id !== link.id);\n this.deselect(link);\n }\n\n // private emit>(type: K, ev: (type: K) => EventMap[K]) {\n // return this.eventTarget.emit(ev(type));\n // }\n\n addEventListener>(type: K, listener: (this: EventSource, ev: EventMap[K]) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n\n removeEventListener>(type: K, listener: (this: EventSource, ev: EventMap[K]) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.removeEventListener(type, listener, options);\n }\n\n get length() { return this.selected.length };\n\n select(link: Link) {\n this.selectMany([link]);\n }\n\n selectMany(links: Link[]) {\n if (this.selected.length === 0)\n this.eventTarget.dispatchEvent(new CustomEvent(\"select-started\"));\n\n const missing = links.filter(m => !this.selected.some(s => m.id === s.id));\n this.selected = this.selected.concat(missing);\n this.eventTarget.dispatchEvent(new CustomEvent(\"selected\", { detail: missing }));\n }\n\n deselect(link: Link) {\n this.selected = this.selected.filter(m => m.id !== link.id);\n \n if (this.selected.length === 0)\n this.eventTarget.dispatchEvent(new CustomEvent(\"select-ended\"));\n \n this.eventTarget.dispatchEvent(new CustomEvent(\"deselected\", { detail: [link] }));\n }\n\n deselectAll = () => {\n const deselected = this.selected.slice(0);\n this.selected.length = 0;\n if (this.selected.length === 0)\n this.eventTarget.dispatchEvent(new CustomEvent(\"select-ended\"));\n this.eventTarget.dispatchEvent(new CustomEvent(\"deselected\", { detail: deselected }));\n }\n\n\n selectAllRequest() {\n this.eventTarget.dispatchEvent(new CustomEvent(\"select-all-requested\"));\n }\n\n isSelected(id: string) {\n return this.selected.some(m => m.id === id);\n }\n\n all() {\n return this.selected.slice(0);\n }\n}\n","import { Routing, RouteChangeOrigin, IRoute } from \"lib/Routing\";\nimport { AppContextStore } from \"features/application-context/AppContextStore\";\nimport { LinkPageCriteria } from \"./LinkPageModel\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { Linkstack, StackStore } from \"features/stacks/StackStore\";\nimport { ClassTypename, Typename } from \"lib/Types\";\nimport EventTarget from \"@ungap/event-target\";\n\ninterface EventMap {\n \"stack-changed\": Linkstack;\n \"changed\": LinkPageCriteria;\n}\n\n/*\n Keeps tap of where we are in links and stacks\n Reads and builds urls\n\n Does not change data\n*/\n@ClassTypename(\"LinkSession\")\nexport class LinkSession {\n private eventTarget = new EventTarget();\n private _currentStack: Linkstack;\n private static _instance = new LinkSession();\n\n static get instance() { return LinkSession._instance; }\n private constructor() {\n Routing.instance.onChange(async route => {\n const criteria = LinkSession.parseRoute(route);\n\n if (criteria) {\n this._currentStack = await StackStore.instance.getStackBySlug(criteria.user, criteria.stack);\n const { LinkPageElement } = await import( /* webpackChunkName: \"stacks\" */ \"./LinkPageElement\");\n \n // if pageload, then server will take care of this\n if (route.origin !== RouteChangeOrigin.PageLoad) {\n const dataElement = document.createElement(\"script\");\n dataElement.setAttribute(\"type\", \"application/json+link-page-criteria\");\n dataElement.innerText = JSON.stringify(criteria);\n const element = new LinkPageElement();\n element.append(dataElement);\n await AppContextStore.instance.present(\"\", element, ...LinkSession.buildTitle(criteria, this._currentStack));\n } else {\n AppContextStore.instance.presentTitle(\"link-page\", ...LinkSession.buildTitle(criteria, this._currentStack));\n }\n\n this.emit(\"changed\", criteria);\n this.emit(\"stack-changed\", this.currentStack);\n }\n });\n }\n\n public addEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.addEventListener(type, listener, options);\n }\n\n public removeEventListener>(type: K, listener: (this: EventSource, ev: CustomEvent) => any, options?: boolean | AddEventListenerOptions) {\n return this.eventTarget.removeEventListener(type, listener, options);\n }\n\n private emit, T extends EventMap>(type: K, value: T[K]) {\n return this.eventTarget.dispatchEvent(new CustomEvent(type, { detail: Object.assign({}, value, { [Typename]: LinkSession[Typename] }) }));\n }\n\n get currentStack() { return this._currentStack; }\n\n static buildTitle(criteria: LinkPageCriteria, stack: Linkstack): string[] {\n if (criteria.create) {\n return [\n \"Bookmarks\",\n \"Create stack\"\n ];\n }\n\n return [\n \"Bookmarks\",\n stack?.title,\n criteria?.query ? `Matching ${criteria?.query}` : \"\"\n ];\n }\n\n // todo - \"create\" / \"edit\"\n static parseRoute(route: IRoute): LinkPageCriteria {\n if (route.path[1] !== \"stacks\" && route.path[1] !== \"links\")\n return undefined;\n\n if (!route.path[0].startsWith(\"@\"))\n return undefined;\n\n if (route.path[2] === \"create\")\n return {\n user: route.path[0].substring(1),\n create: true\n };\n\n let page: number;\n if (route.parameters.page)\n page = parseInt(route.parameters.page);\n\n if (isNaN(page))\n page = 1;\n\n\n const criteria: LinkPageCriteria = {\n user: route.path[0].substring(1),\n stack: route.path[1] === \"links\" ? \"links\" : route.path[2],\n page: page\n };\n\n if (route.parameters.query)\n criteria.query = route.parameters.query;\n\n if (route.parameters.tags)\n criteria.tags = route.parameters.tags?.split(\";\");\n\n if (route.hash)\n criteria.linkId = route.hash.substring(1);\n\n return criteria;\n }\n\n static buildUrl(criteria: LinkPageCriteria): URL {\n const url = new URL(`${new UrlProvider().root}/@${criteria.user}/stacks/${criteria.stack}`);\n\n if (criteria.page && criteria.page > 1 && criteria.page < 1024)\n url.searchParams.append(\"page\", criteria.page.toString());\n\n if (criteria.tags)\n criteria.tags.forEach(tag => {\n url.searchParams.append(\"tag\", tag);\n });\n\n if (criteria.query)\n url.searchParams.append(\"query\", criteria.query);\n\n if (criteria.linkId)\n url.hash = criteria.linkId;\n\n return url;\n }\n\n}","import { EventEmitter } from \"events\";\n\nexport class ElementDataWatcher extends EventEmitter {\n private changeObserver: MutationObserver;\n private type: string = \"application/json+\";\n private cachedEntity: TEntity;\n private cachedChecksum: string;\n \n private emitChanged = (entity: TEntity) => this.emit(\"changed\", entity);\n public onChanged = (callback: (entity: TEntity) => void) => this.on(\"changed\", callback);\n public offChanged = (callback: (entity: TEntity) => void) => this.removeListener(\"changed\", callback);\n\n constructor(private rootElement: HTMLElement, entityContentType: string) {\n super();\n this.type += entityContentType;\n\n this.cachedChecksum = this.checksum(this.getJSON());\n\n this.changeObserver = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n const addedNodes = [].slice.call(mutation.addedNodes) as HTMLElement[];\n const script = addedNodes.filter(a => a.localName === \"script\" && a.getAttribute(\"type\") === this.type)[0] as HTMLElement;\n if (script && script.innerText) {\n if (this.checksum(script.innerText) !== this.cachedChecksum) {\n this.flushCache();\n this.emitChanged(this.data);\n }\n \n }\n \n });\n });\n\n this.changeObserver.observe(this.rootElement, { childList: true })\n }\n\n private flushCache() {\n this.cachedEntity = undefined;\n }\n\n private getJSON() {\n const jsonElement = this.rootElement.querySelector(`script[type='${this.type}']`) as HTMLElement;\n if (!jsonElement) {\n //console.log(`jsonElement not found for element ${this.id} (${this.innerHTML.length})`, this.innerHTML);\n return undefined;\n }\n\n return jsonElement.innerText; \n }\n\n\n private parseEntity() : TEntity {\n const json = this.getJSON();\n if (json)\n return JSON.parse(json) as TEntity;\n \n return undefined; \n }\n\n get json() {\n return this.getJSON();\n }\n\n get data(): TEntity {\n if (this.cachedEntity)\n return this.cachedEntity;\n\n return this.cachedEntity = this.parseEntity();\n }\n\n set data(entity: TEntity) {\n const jsonElement = this.rootElement.querySelector(`script[type='${this.type}']`) as HTMLElement;\n jsonElement.innerHTML = JSON.stringify(entity);\n this.flushCache();\n this.emitChanged(this.data);\n }\n\n destroy() {\n this.changeObserver.disconnect();\n }\n\n private checksum(source = \"\") : string\n {\n let chk = 0x12345678;\n const len = source.length;\n for (let i = 0; i < len; i++) \n chk += (source.charCodeAt(i) * (i + 1));\n \n return (chk & 0xffffffff).toString(16);\n }\n}","import \"./PagePickerElement-style\";\nimport { ElementDataWatcher } from \"lib/ElementDataWatcher\";\nimport { LinkPageCriteria } from \"./LinkPageModel\";\nimport { LinkSession } from \"./LinkSession\";\n\nclass PagePickerElement extends HTMLElement {\n private criteriaWatcher: ElementDataWatcher;\n\n connectedCallback() {\n if (this.hasAttribute(\"rendered\"))\n return;\n \n this.criteriaWatcher = new ElementDataWatcher(this, \"link-page-criteria\");\n const currentPage = this.criteriaWatcher.data?.page;\n\n if (!currentPage)\n return;\n \n const pageCount = parseInt(this.getAttribute(\"page-count\"));\n\n if (pageCount <= 1) {\n this.remove();\n return;\n }\n \n const allPages = [...Array(pageCount+1).keys()].slice(1); \n\n let slack = 1;\n let range: number[];\n const pageIndex = currentPage-1;\n\n do {\n slack++;\n range = allPages.slice(Math.max(0, pageIndex-slack), Math.min(pageIndex+slack+1, allPages.length)); // +1 = skip current\n\n } while(range.length < 5 && slack < allPages.length);\n\n let firstPage;\n if (range[0] > allPages[0])\n firstPage = 1;\n\n let lastPage\n if (range[range.length-1] < allPages[allPages.length-1])\n lastPage = allPages[allPages.length-1];\n\n this.innerHTML = this.view(range, this.criteriaWatcher.data, currentPage, firstPage, lastPage);\n\n this.addEventListener(\"click\", this.clickHandler);\n }\n\n private clickHandler = (event: MouseEvent) => {\n if (!(event.target instanceof Element))\n return;\n\n const pickPage = (event.target).closest(\"[pick-page]\");\n if (!pickPage)\n return;\n\n this.dispatchEvent(new CustomEvent(\"changed\", { detail: parseInt(pickPage.getAttribute(\"pick-page\")) }));\n \n }\n\n private routeAttribute = () => document.body.classList.contains(\"authenticated\") ? \"route\" : \"\";\n \n\n private view = (pages: number[], criteria: LinkPageCriteria, currentPage: number, firstPage?: number, lastPage?: number) => `\n ${currentPage > pages[0] ? `\n ${require(\"!!raw-loader!image/arrow-left-20-v1.svg\")}\n ` : \"\"}\n \n ${firstPage ? `\n ${firstPage}\n ${firstPage < pages[0]-1 ? \"...\" : \"\"}\n ` : \"\" }\n \n \n ${pages.map(page => `${page}`).join(\"\")}\n \n \n ${lastPage ? `\n ${lastPage > pages[pages.length-1]+1 ? \"...\" : \"\"}\n ${lastPage}\n \n ` : \"\" }\n \n ${currentPage < pages[pages.length-1] ? `\n ${require(\"!!raw-loader!image/arrow-right-20-v1.svg\")}\n ` : \"\"}\n\n \n \n `;\n\n private buildUrl(criteria: LinkPageCriteria, page: number) : URL {\n criteria.page = page;\n return LinkSession.buildUrl(criteria);\n }\n}\n\ncustomElements.define(\"page-picker\", PagePickerElement);","import \"./PagePickerElement-style\";\n\nclass SearchSummaryElement extends HTMLElement {\n constructor() {\n super();\n\n this.innerHTML = this.view();\n }\n\n private view = () => `\n EltonJohn\n `;\n}\n\ncustomElements.define(\"search-summary\", SearchSummaryElement);","import \"./StackLinkElement-style\";\nimport { UrlProvider } from \"lib/UrlProvider\";\nimport { StackStore, Linkstack } from \"features/stacks/StackStore\";\n\nclass StackLinkElement extends HTMLElement {\n async connectedCallback() {\n if (this.hasAttribute(\"rendered\"))\n return;\n\n const stack = await StackStore.instance.getStackById(this.getAttribute(\"stack-id\"));\n\n if (!stack)\n return;\n \n this.innerHTML = this.view(stack);\n }\n\n private view = (stack: Linkstack) => `\n \n \n
My stacks
\n ${require(\"!!raw-loader!image/icons/divider-12.svg\")}\n
${stack.title}
\n
`;\n}\n\ncustomElements.define(\"stack-link\", StackLinkElement);","export class SerializedEventQueue {\n private events: (() => void)[] = [];\n private stop = false;\n private idleCallback;\n private timerCallback;\n\n constructor() {\n this.cycle();\n }\n\n destroy() {\n this.stop = true;\n window.cancelIdleCallback(this.idleCallback);\n window.clearTimeout(this.timerCallback);\n this.events = undefined;\n }\n\n private cycle() {\n if (this.stop)\n return;\n\n if (this.events.length > 0) {\n const event = this.events.splice(0, 1)[0];\n event();\n this.idleCallback = window.requestIdleCallback(() => this.cycle(), {timeout: 100});\n } else {\n this.timerCallback = setTimeout(() => {\n this.idleCallback = window.requestIdleCallback(() => this.cycle(), {timeout: 100});\n }, 300);\n }\n }\n\n add(action: () => void){\n if (this.events)\n this.events.push(action);\n }\n}","import \"./LinkPageElement-style\";\nimport \"./PagePickerElement\";\nimport \"./SearchSummaryElement\";\nimport \"./StackLinkElement\";\nimport { AuthenticationStore } from \"features/authentication\";\nimport { BulkLinkStore } from \"features/link-list/BulkLinkStore\";\nimport { ElementDataWatcher } from \"lib/ElementDataWatcher\";\nimport { Formatting } from \"lib/Formatting\";\nimport { LinkPage, LinkPageCriteria } from \"./LinkPageModel\";\nimport { LinkSession } from \"./LinkSession\";\nimport { LinkPageStore } from \"./LinkPageStore\";\nimport { Link } from \"features/links\";\nimport { Linkstack, StackStore } from \"features/stacks/StackStore\";\nimport { Routing } from \"lib/Routing\";\nimport { SerializedEventQueue } from \"lib/SerializedEventQueue\";\n\nexport class LinkPageElement extends HTMLElement {\n private userId: string;\n private escape = Formatting.htmlEscape;\n private criteriaWatcher: ElementDataWatcher;\n private serializedEventQueue = new SerializedEventQueue();\n private linkArea: HTMLElement;\n private showStackIndicators = false;\n private jumpToLinkId: string;\n\n connectedCallback() {\n // init data\n this.criteriaWatcher = new ElementDataWatcher(this, \"link-page-criteria\");\n\n // just trying without async callback\n\n requestAnimationFrame(async () => {\n // are we at the right page to jump to link?\n if (!await this.scrollCheck())\n return;\n\n this.userId = (await AuthenticationStore.instance.currentUser()).userId;\n\n if (!this.hasAttribute(\"rendered\"))\n await this.render();\n\n await this.scrollToElement();\n });\n\n\n // grab elements\n this.linkArea = this.querySelector(\"[name=link-area]\");\n\n // setup events\n this.addEventListener(\"selected\", this.itemSelectHandler);\n this.addEventListener(\"deselected\", this.itemDeselectHandler);\n\n BulkLinkStore.instance.addEventListener(\"select-all-requested\", this.selectAllHandler);\n BulkLinkStore.instance.addEventListener(\"selected\", this.selectHandler);\n BulkLinkStore.instance.addEventListener(\"deselected\", this.deselectHandler);\n\n LinkPageStore.instance.addEventListener(\"link-added\", this.linkAddedHandler);\n LinkPageStore.instance.addEventListener(\"link-updated\", this.linkUpdatedHandler);\n LinkPageStore.instance.addEventListener(\"link-removed\", this.linkRemovedHandler);\n\n\n }\n\n disconnectedCallback() {\n // teardown event\n this.removeEventListener(\"selected\", this.itemSelectHandler);\n this.removeEventListener(\"deselected\", this.itemDeselectHandler);\n BulkLinkStore.instance.removeEventListener(\"select-all-requested\", this.selectAllHandler);\n BulkLinkStore.instance.removeEventListener(\"selected\", this.selectHandler);\n BulkLinkStore.instance.removeEventListener(\"deselected\", this.deselectHandler);\n\n LinkPageStore.instance.removeEventListener(\"link-added\", this.linkAddedHandler);\n LinkPageStore.instance.removeEventListener(\"link-updated\", this.linkUpdatedHandler);\n LinkPageStore.instance.removeEventListener(\"link-removed\", this.linkRemovedHandler);\n\n // other cleanup\n this.serializedEventQueue?.destroy();\n }\n\n // all the stuff that is also handled by the server\n private render = async () => {\n let stack;\n if (this.criteria.create) {\n stack = {\n\n }\n // render initial view\n this.insertAdjacentHTML(\"afterbegin\", this.view(stack, \"create\"));\n return;\n } else {\n stack = await StackStore.instance.getStackBySlug(this.userId, this.criteria.stack);\n this.showStackIndicators = stack.slug === \"links\";\n\n // render initial view\n this.insertAdjacentHTML(\"afterbegin\", this.view(stack, \"view\"));\n }\n\n // render links\n const linkPage = await LinkPageStore.instance.getView(this.criteriaWatcher.data);\n\n // no search results?\n if (this.criteria.query && linkPage.links.length === 0) {\n this.innerHTML = this.noResultsView();\n return;\n }\n\n this.linkArea = this.querySelector(\"[name=link-area]\");\n if (linkPage.links.length > 0)\n this.linkArea.innerHTML = this.linkPageView(linkPage);\n }\n\n private async scrollToElement() {\n if (!this.jumpToLinkId)\n return;\n\n setTimeout(() => {\n window.location.hash = \"#_\";\n setTimeout(() => {\n window.location.hash = `#${this.jumpToLinkId}`;\n }, 100);\n }, 100);\n }\n\n private async scrollCheck() {\n const route = Routing.instance.route;\n let hash = route.hash || window.location.hash;\n if (hash && hash.indexOf(\"#\") === 0)\n hash = hash.substring(1);\n\n if (!hash || hash === \"\")\n return true;\n\n const page = await LinkPageStore.instance.getPage(hash);\n\n if (!isNaN(page)) {\n if (page !== this.criteria.page) {\n const newCriteria = this.criteria;\n newCriteria.page = page;\n const newUrl = LinkSession.buildUrl(newCriteria);\n Routing.instance.go(newUrl.toString(), \"LinkPageElement\");\n return false;\n } else {\n this.jumpToLinkId = hash;\n }\n }\n\n return true;\n }\n\n private get criteria(): LinkPageCriteria {\n return this.criteriaWatcher.data;\n }\n\n private linkRemovedHandler = (event: CustomEvent) => this.querySelector(`link-control[id='${event.detail.id}']`)?.remove();\n\n private linkAddedHandler = async (event: CustomEvent) => {\n const link = event.detail;\n\n this.serializedEventQueue.add(async () => {\n\n if (!this.criteria.stack || this.criteria.stack !== link.stack)\n return;\n\n const howToAddLinks = document.querySelector(\"tip-display\");\n if (howToAddLinks && howToAddLinks.remove)\n howToAddLinks.remove();\n\n const element = this.querySelector(`link-control[id=\"${link.id}\"]`);\n\n if (!element) {\n this.linkArea.insertAdjacentHTML(\"afterbegin\", this.linkView(link));\n }\n });\n };\n\n private linkUpdatedHandler = async (event: CustomEvent) => {\n const link = event.detail;\n this.serializedEventQueue.add(async () => {\n const element = this.querySelector(`link-control[id=\"${link.id}\"]`);\n\n if (!element)\n return;\n\n element.toggleAttribute(\"allow-edit\", link.userId === this.userId);\n const jsonElement = element.querySelector(\"script[type='application/json+link']\") as HTMLScriptElement;\n jsonElement.innerText = JSON.stringify(link);\n });\n };\n\n private selectAllHandler = () => {\n\n const links = Array.from(this.querySelectorAll(\"link-control\"))\n .map(m => m.querySelector(\"script[type='application/json+link']\") as HTMLScriptElement)\n .map(m => JSON.parse(m.innerText) as Link);\n\n BulkLinkStore.instance.selectMany(links);\n }\n\n private itemSelectHandler = (event: CustomEvent) => BulkLinkStore.instance.select(event.detail);\n\n private itemDeselectHandler = (event: CustomEvent) => BulkLinkStore.instance.deselect(event.detail);\n\n private selectHandler = (event: CustomEvent) => {\n event.detail.forEach(link => this.querySelector(`link-control[id=\"${link.id}\"]`)?.setAttribute(\"marked\", \"\"));\n }\n\n private deselectHandler = (event: CustomEvent) =>\n event.detail.forEach(link => this.querySelector(`link-control[id=\"${link.id}\"]`)?.removeAttribute(\"marked\"));\n\n private linkView = (link: Link) => this.escape`\n \n \n \n `;\n\n private linkPageView = (linkPage: LinkPage) => `\n ${linkPage.links.map(link => this.linkView(link)).join(\"\")}\n \n \n \n `;\n\n private view = (stack: Linkstack, action: \"view\" | \"create\") => this.escape`\n \n \n\n $${action === \"view\" ? this.escape`\n
\n $${stack.linkCount === 0 ? `` : \"\"}\n $${this.linkSkeletons(stack.linkCount)}\n
\n `: \"\"} \n `;\n\n private noResultsView = () => `\n
\n ${require(\"!!raw-loader!image/no-results.svg\")}\n
No results
\n
\n `;\n\n private linkSkeletons = (count: number) => {\n const items = [...Array(count).keys()];\n return items.map(_ => \"\").join(\"\");\n };\n}\n\ncustomElements.define(\"link-page\", LinkPageElement);","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/*! ie11CustomProperties.js v4.1.0 | MIT License | https://git.io/fjXMN */\r\n!function () {\r\n\t'use strict';\r\n\r\n\t// check for support\r\n\tvar testEl = document.createElement('i');\r\n\ttestEl.style.setProperty('--x', 'y');\r\n\tif (testEl.style.getPropertyValue('--x') === 'y' || !testEl.msMatchesSelector) return;\r\n\r\n\tif (!Element.prototype.matches) Element.prototype.matches = Element.prototype.msMatchesSelector;\r\n\r\n var listeners = [],\r\n root = document,\r\n Observer;\r\n\r\n\tfunction qsa(el, selector){\r\n\t\ttry {\r\n\t\t\treturn el.querySelectorAll(selector);\r\n\t\t} catch(e) {\r\n\t\t\t// console.warn('the Selector '+selector+' can not be parsed');\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n function onElement (selector, callback) {\r\n var listener = {\r\n selector: selector,\r\n callback: callback,\r\n elements: new WeakMap(),\r\n };\r\n\t\tvar els = qsa(root, listener.selector), i=0, el;\r\n\t\twhile (el = els[i++]) {\r\n listener.elements.set(el, true);\r\n listener.callback.call(el, el);\r\n }\r\n listeners.push(listener);\r\n if (!Observer) {\r\n Observer = new MutationObserver(checkMutations);\r\n Observer.observe(root, {\r\n childList: true,\r\n subtree: true\r\n });\r\n }\r\n checkListener(listener);\r\n };\r\n function checkListener(listener, target) {\r\n var i = 0, el, els = [];\r\n\t\ttry {\r\n\t\t\ttarget && target.matches(listener.selector) && els.push(target);\r\n\t\t} catch(e) {}\r\n if (loaded) { // ok? check inside node on innerHTML - only when loaded\r\n Array.prototype.push.apply(els, qsa(target || root, listener.selector));\r\n }\r\n while (el = els[i++]) {\r\n if (listener.elements.has(el)) continue;\r\n listener.elements.set(el,true);\r\n listener.callback.call(el, el);\r\n }\r\n }\r\n function checkListeners(inside) {\r\n var i = 0, listener;\r\n while (listener = listeners[i++]) checkListener(listener, inside);\r\n }\r\n function checkMutations(mutations) {\r\n\t\tvar j = 0, i, mutation, nodes, target;\r\n while (mutation = mutations[j++]) {\r\n nodes = mutation.addedNodes, i = 0;\r\n while (target = nodes[i++]) target.nodeType === 1 && checkListeners(target);\r\n }\r\n }\r\n\r\n var loaded = false;\r\n document.addEventListener('DOMContentLoaded', function () {\r\n loaded = true;\r\n });\r\n\r\n\t// svg polyfills\r\n\tfunction copyProperty(prop, from, to){\r\n\t\tvar desc = Object.getOwnPropertyDescriptor(from, prop);\r\n\t\tObject.defineProperty(to, prop, desc);\r\n\t}\r\n\tif (!('classList' in Element.prototype)) {\r\n\t\tcopyProperty('classList', HTMLElement.prototype, Element.prototype);\r\n\t}\r\n\tif (!('innerHTML' in Element.prototype)) {\r\n\t\tcopyProperty('innerHTML', HTMLElement.prototype, Element.prototype);\r\n\t}\r\n\tif (!('runtimeStyle' in Element.prototype)) { // new\r\n\t\tcopyProperty('runtimeStyle', HTMLElement.prototype, Element.prototype);\r\n\t}\r\n\tif (!('sheet' in SVGStyleElement.prototype)) {\r\n\t\tObject.defineProperty(SVGStyleElement.prototype, 'sheet', {\r\n\t\t\tget:function(){\r\n\t\t\t\tvar all = document.styleSheets, i=0, sheet;\r\n\t\t\t\twhile (sheet=all[i++]) {\r\n\t\t\t\t\tif (sheet.ownerNode === this) return sheet;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// main logic\r\n\tvar styles_of_getter_properties = {};\r\n\tvar drawQueue = new Set();\r\n\tvar collecting = false;\r\n\tvar drawing = false;\r\n\r\n\t// cached regexps, better performance\r\n\tvar regFindSetters = /([\\s{;])(--([A-Za-z0-9-_]*)\\s*:([^;!}{]+)(!important)?)(?=\\s*([;}]|$))/g;\r\n\tvar regFindGetters = /([{;]\\s*)([A-Za-z0-9-_]+\\s*:[^;}{]*var\\([^!;}{]+)(!important)?(?=\\s*([;}$]|$))/g;\r\n\tvar regRuleIEGetters = /-ieVar-([^:]+):/g\r\n\tvar regRuleIESetters = /-ie-([^};]+)/g\r\n\t//const regHasVar = /var\\(/;\r\n\tvar regPseudos = /:(hover|active|focus|target|visited|link|:before|:after|:first-letter|:first-line)/;\r\n\r\n\tfunction foundStyle(el){\r\n\t\tif (el.ieCP_polyfilled) return;\r\n\t\tif (el.ieCP_elementSheet) return;\r\n\t\tif (!el.sheet) return;\r\n\t\tif (el.href) {\r\n\t\t\treturn fetchCss(el.href, function (css) {\r\n\t\t\t\tvar newCss = rewriteCss(css);\r\n\t\t\t\tif (css === newCss) return;\r\n\t\t\t\tactivateStyleElement(el, newCss);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar css = el.innerHTML;\r\n\t\tvar newCss = rewriteCss(css);\r\n\t\tif (css === newCss) return;\r\n\t\tactivateStyleElement(el, newCss);\r\n\t}\r\n\tonElement('style', foundStyle);\r\n\tonElement('link[rel=\"stylesheet\"]', foundStyle);\r\n\t// immediate, to pass w3c-tests, bud its a bad idea\r\n\t// addEventListener('DOMNodeInserted',function(e){ e.target.tagName === 'STYLE' && foundStyle(e.target); });\r\n\r\n\r\n\r\n\tonElement('[ie-style]', function (el) {\r\n\t\tvar newCss = rewriteCss('{'+el.getAttribute('ie-style')).substr(1);\r\n\t\tel.style.cssText += ';'+ newCss;\r\n\t\tvar found = parseRewrittenStyle(el.style);\r\n\t\tif (found.getters) addGetterElement(el, found.getters, '%styleAttr');\r\n\t\tif (found.setters) addSetterElement(el, found.setters);\r\n\t});\r\n\r\n\t// ie has a bug, where unknown properties at pseudo-selectors are computed at the element\r\n\t// #el::after { -content:'x'; } => getComputedStyle(el)['-content'] == 'x'\r\n\t// should we add something like -ieVar-pseudo_after-content:'x'?\r\n\tfunction rewriteCss(css) {\r\n\r\n\t\t/* uncomment if spec finished and needed by someone\r\n\t\tcss = css.replace(/@property ([^{]+){([^}]+)}/, function($0, prop, body){\r\n\t\t\tprop = prop.trim();\r\n\t\t\tconst declaration = {name:prop};\r\n\t\t\tbody.split(';').forEach(function(pair){\r\n\t\t\t\tconst x = pair.split(':');\r\n\t\t\t\tif (x[1]) declaration[ x[0].trim() ] = x[1];\r\n\t\t\t});\r\n\t\t\tdeclaration['inherits'] = declaration['inherits'].trim()==='true' ? true : false;\r\n\t\t\tdeclaration['initialValue'] = declaration['initial-value'];\r\n\t\t\tCSS.registerProperty(declaration)\r\n\t\t\treturn '/*\\n @property ... removed \\n*'+'/';\r\n\t\t});\r\n\t\t*/\r\n\t\treturn css.replace(regFindSetters, function($0, $1, $2, $3, $4, important){\r\n\t\t\treturn $1+'-ie-'+(important?'❗':'')+$3+':'+encodeValue($4);\r\n\t\t}).replace(regFindGetters, function($0, $1, $2, important){\r\n\t\t\treturn $1+'-ieVar-'+(important?'❗':'')+$2+'; '+$2; // keep the original, so chaining works \"--x:var(--y)\"\r\n\t\t});\r\n\t}\r\n\tfunction encodeValue(value){\r\n\t\treturn value;\r\n\t\treturn value.replace(/ /g,'␣');\r\n\t}\r\n\tvar keywords = {initial:1,inherit:1,revert:1,unset:1};\r\n\tfunction decodeValue(value){\r\n\t\treturn value;\r\n\t\tif (value===undefined) return;\r\n\t\tvalue = value.replace(/␣/g,' ');\r\n\t\tconst trimmed = value.trim();\r\n\t\tif (keywords[trimmed]) return trimmed;\r\n\t\treturn value;\r\n\t}\r\n\r\n\tfunction parseRewrittenStyle(style) { // less memory then parameter cssText?\r\n\r\n\t\t// ie11 can access unknown properties in stylesheets only if accessed a dashed known property\r\n\t\tstyle['z-index'] === style && x(); // do something (compare and call) just for minifiers\r\n\r\n\t\tconst cssText = style.cssText;\r\n\t\tvar matchesGetters = cssText.match(regRuleIEGetters), j, match;\r\n\t\tif (matchesGetters) {\r\n\t\t\tvar getters = []; // eg. [border,color]\r\n\t\t\tfor (j = 0; match = matchesGetters[j++];) {\r\n\t\t\t\tlet propName = match.slice(7, -1);\r\n\t\t\t\tif (propName[0] === '❗') propName = propName.substr(1);\r\n\t\t\t\tgetters.push(propName);\r\n\r\n\t\t\t\tif (!styles_of_getter_properties[propName]) styles_of_getter_properties[propName] = [];\r\n\t\t\t\tstyles_of_getter_properties[propName].push(style);\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar matchesSetters = cssText.match(regRuleIESetters);\r\n\t\tif (matchesSetters) {\r\n\t\t\tvar setters = {}; // eg. [--color:#fff, --padding:10px];\r\n\t\t\tfor (j = 0; match = matchesSetters[j++];) {\r\n\t\t\t\tlet x = match.substr(4).split(':');\r\n\t\t\t\tlet propName = x[0];\r\n\t\t\t\tlet propValue = x[1];\r\n\t\t\t\tif (propName[0] === '❗') propName = propName.substr(1);\r\n\t\t\t\tsetters[propName] = propValue;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {getters:getters, setters:setters};\r\n\t}\r\n\tfunction activateStyleElement(style, css) {\r\n\t\tstyle.sheet.cssText = css;\r\n\t\tstyle.ieCP_polyfilled = true;\r\n\t\tvar rules = style.sheet.rules, i=0, rule; // cssRules = CSSRuleList, rules = MSCSSRuleList\r\n\t\twhile (rule = rules[i++]) {\r\n\t\t\tconst found = parseRewrittenStyle(rule.style);\r\n\t\t\tif (found.getters) addGettersSelector(rule.selectorText, found.getters);\r\n\t\t\tif (found.setters) addSettersSelector(rule.selectorText, found.setters);\r\n\r\n\t\t\t// mediaQueries: redraw the hole document\r\n\t\t\t// better add events for each element?\r\n\t\t\tconst media = rule.parentRule && rule.parentRule.media && rule.parentRule.media.mediaText;\r\n\t\t\tif (media && (found.getters || found.setters)) {\r\n\t\t\t\tmatchMedia(media).addListener(function(){\r\n\t\t\t\t\tdrawTree(document.documentElement)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t\tredrawStyleSheets();\r\n\t}\r\n\r\n\tfunction addGettersSelector(selector, properties) {\r\n\t\tselectorAddPseudoListeners(selector);\r\n\t\tonElement(unPseudo(selector), function (el) {\r\n\t\t\taddGetterElement(el, properties, selector);\r\n\t\t\tdrawElement(el);\r\n\t\t});\r\n\t}\r\n\tfunction addGetterElement(el, properties, selector) {\r\n\t\tvar i=0, prop, j;\r\n\t\tconst selectors = selector.split(','); // split grouped selectors\r\n\t\tel.setAttribute('iecp-needed', true);\r\n\t\tif (!el.ieCPSelectors) el.ieCPSelectors = {};\r\n\t\twhile (prop = properties[i++]) {\r\n\t\t\tfor (j = 0; selector = selectors[j++];) {\r\n\t\t\t\tconst parts = selector.trim().split('::');\r\n\t\t\t\tif (!el.ieCPSelectors[prop]) el.ieCPSelectors[prop] = [];\r\n\t\t\t\tel.ieCPSelectors[prop].push({\r\n\t\t\t\t\tselector: parts[0],\r\n\t\t\t\t\tpseudo: parts[1] ? '::' + parts[1] : ''\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction addSettersSelector(selector, propVals) {\r\n\t\tselectorAddPseudoListeners(selector);\r\n\t\tonElement(unPseudo(selector), function (el) {\r\n\t\t\taddSetterElement(el, propVals);\r\n\t\t});\r\n\t}\r\n\tfunction addSetterElement(el, propVals) {\r\n\t\tif (!el.ieCP_setters) el.ieCP_setters = {};\r\n\t\tfor (var prop in propVals) { // eg. {foo:#fff, bar:baz}\r\n\t\t\tel.ieCP_setters['--' + prop] = 1;\r\n\t\t}\r\n\t\tdrawTree(el);\r\n\t}\r\n\r\n\tfunction redrawStyleSheets() {\r\n\t\tfor (var prop in styles_of_getter_properties) {\r\n\t\t\tlet styles = styles_of_getter_properties[prop];\r\n\t\t\tfor (var i=0, style; style=styles[i++];) {\r\n\t\t\t\tif (style.owningElement) continue;\r\n\t\t\t\tvar value = style['-ieVar-'+prop];\r\n\t\t\t\tif (!value) continue;\r\n\t\t\t\tvalue = styleComputeValueWidthVars(getComputedStyle(document.documentElement), value);\r\n\t\t\t\tif (value === '') continue;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tstyle[prop] = value;\r\n\t\t\t\t} catch(e) {}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar pseudos = {\r\n\t\thover:{\r\n\t\t\ton:'mouseenter',\r\n\t\t\toff:'mouseleave'\r\n\t\t},\r\n\t\tfocus:{\r\n\t\t\ton:'focusin',\r\n\t\t\toff:'focusout'\r\n\t\t},\r\n\t\tactive:{\r\n\t\t\ton:'CSSActivate',\r\n\t\t\toff:'CSSDeactivate'\r\n\t\t},\r\n\t};\r\n\tfunction selectorAddPseudoListeners(selector){\r\n\t\t// ie11 has the strange behavoir, that groups of selectors are individual rules, but starting with the full selector:\r\n\t\t// td, th, button { color:red } results in this rules:\r\n\t\t// \"td, th, button\" | \"th, th\" | \"th\"\r\n\t\tselector = selector.split(',')[0];\r\n\t\tfor (var pseudo in pseudos) {\r\n\t\t\tvar parts = selector.split(':'+pseudo);\r\n\t\t\tif (parts.length > 1) {\r\n\t\t\t\tvar ending = parts[1].match(/^[^\\s]*/); // ending elementpart of selector (used for not(:active))\r\n\t\t\t\tlet sel = unPseudo(parts[0]+ending);\r\n\t\t\t\tconst listeners = pseudos[pseudo];\r\n\t\t\t\tonElement(sel, function (el) {\r\n\t\t\t\t\tel.addEventListener(listeners.on, drawTreeEvent);\r\n\t\t\t\t\tel.addEventListener(listeners.off, drawTreeEvent);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar CSSActive = null;\r\n\tdocument.addEventListener('mousedown',function(e){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif (e.target === document.activeElement) {\r\n\t\t\t\tvar evt = document.createEvent('Event');\r\n\t\t\t\tevt.initEvent('CSSActivate', true, true);\r\n\t\t\t\tCSSActive = e.target;\r\n\t\t\t\tCSSActive.dispatchEvent(evt);\r\n\t\t\t}\r\n\t\t})\r\n\t});\r\n\tdocument.addEventListener('mouseup',function(){\r\n\t\tif (CSSActive) {\r\n\t\t\tvar evt = document.createEvent('Event');\r\n\t\t\tevt.initEvent('CSSDeactivate', true, true);\r\n\t\t\tCSSActive.dispatchEvent(evt);\r\n\t\t\tCSSActive = null;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction unPseudo(selector){\r\n\t\treturn selector.replace(regPseudos,'').replace(':not()','');\r\n\t}\r\n\r\n\t// draw queue\r\n\tfunction drawElement(el){\r\n\t\tdrawQueue.add(el);\r\n\t\tif (collecting) return;\r\n\t\tcollecting = true;\r\n\t\trequestAnimationFrame(function(){\r\n\t\t//setImmediate(function(){\r\n\t\t\tcollecting = false;\r\n\t\t\tdrawing = true;\r\n\t\t\tdrawQueue.forEach(_drawElement);\r\n\t\t\tdrawQueue.clear();\r\n\t\t\tsetTimeout(function(){ // mutationObserver will trigger delayed, requestAnimationFrame will miss some changes\r\n\t\t\t\tdrawing = false;\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\tvar uniqueCounter = 0;\r\n\tfunction _drawElement(el) {\r\n\t\tif (!el.ieCP_unique) { // use el.uniqueNumber? but needs class for the css-selector => test performance\r\n\t\t\tel.ieCP_unique = ++uniqueCounter;\r\n\t\t\tel.classList.add('iecp-u' + el.ieCP_unique);\r\n\t\t}\r\n\t\tvar style = getComputedStyle(el);\r\n\t\tlet css = '';\r\n\r\n\t\tel.runtimeStyle.cssText = ''; // new\r\n\r\n\t\tfor (var prop in el.ieCPSelectors) {\r\n\t\t\tvar important = style['-ieVar-❗' + prop];\r\n\t\t\tlet valueWithVar = important || style['-ieVar-' + prop];\r\n\t\t\tif (!valueWithVar) continue; // todo, what if '0'\r\n\t\t\tvar details = {};\r\n\t\t\tvar value = styleComputeValueWidthVars(style, valueWithVar, details);\r\n\t\t\t//if (value==='initial') value = initials[prop];\r\n\t\t\tif (important) value += ' !important';\r\n\t\t\tfor (var i=0, item; item=el.ieCPSelectors[prop][i++];) { // todo: split and use requestAnimationFrame?\r\n\t\t\t\tif (item.selector === '%styleAttr') el.style[prop] = value; // i dont know why but i initial have to set style also (seen in demo)\r\n\t\t\t\tif (!important && details.allByRoot !== false) continue; // dont have to draw root-properties\r\n\t\t\t\tif (item.pseudo) {\r\n\t\t\t\t\tcss += item.selector + '.iecp-u' + el.ieCP_unique + item.pseudo + '{' + prop + ':' + value + '}\\n';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.runtimeStyle[prop] = value; // new\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telementSetCss(el, css);\r\n\t}\r\n\tfunction elementSetCss(el, css){\r\n\t\tif (!el.ieCP_styleEl && css) {\r\n\t\t\tconst styleEl = document.createElement('style');\r\n\t\t\tstyleEl.ieCP_elementSheet = 1;\r\n\t\t\t//el.appendChild(styleEl); // yes! self-closing tags can have style as children, but - if i set innerHTML, the stylesheet is lost\r\n\t\t\tdocument.head.appendChild(styleEl);\r\n\t\t\tel.ieCP_styleEl = styleEl;\r\n\t\t}\r\n\t\tif (el.ieCP_styleEl) el.ieCP_styleEl.innerHTML = css;\r\n\t}\r\n\t/* */\r\n\r\n\tfunction drawTree(target) {\r\n\t\tif (!target) return;\r\n\r\n\t\ttarget === document.documentElement && redrawStyleSheets(); // new\r\n\r\n\t\tvar els = target.querySelectorAll('[iecp-needed]');\r\n\t\tif (target.hasAttribute && target.hasAttribute('iecp-needed')) drawElement(target); // self\r\n\t\tfor (var i = 0, el; el = els[i++];) drawElement(el); // tree\r\n\t}\r\n\tfunction drawTreeEvent(e) {\r\n\t\tdrawTree(e.target)\r\n\t}\r\n\r\n\tfunction findVars(str, cb){ // css value parser\r\n\t\tlet level=0, openedLevel=null, lastPoint=0, newStr = '', i=0, char, insideCalc;\r\n\t\twhile (char=str[i++]) {\r\n\t\t\tif (char === '(') {\r\n\t\t\t\t++level;\r\n\t\t\t\tif (openedLevel === null && str[i-4]+str[i-3]+str[i-2] === 'var') {\r\n\t\t\t\t\topenedLevel = level;\r\n\t\t\t\t\tnewStr += str.substring(lastPoint, i-4);\r\n\t\t\t\t\tlastPoint = i;\r\n\t\t\t\t}\r\n\t\t\t\tif (str[i-5]+str[i-4]+str[i-3]+str[i-2] === 'calc') {\r\n\t\t\t\t\tinsideCalc = level;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (char === ')' && openedLevel === level) {\r\n\t\t\t\tlet variable = str.substring(lastPoint, i-1).trim(), fallback;\r\n\t\t\t\tlet x = variable.indexOf(',');\r\n\t\t\t\tif (x!==-1) {\r\n\t\t\t\t\tfallback = variable.slice(x+1);\r\n\t\t\t\t\tvariable = variable.slice(0,x);\r\n\t\t\t\t}\r\n\t\t\t\tnewStr += cb(variable, fallback, insideCalc);\r\n\t\t\t\tlastPoint = i;\r\n\t\t\t\topenedLevel = null;\r\n\t\t\t}\r\n\t\t\tif (char === ')') {\r\n\t\t\t\t--level;\r\n\t\t\t\tif (insideCalc === level) insideCalc = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tnewStr += str.substring(lastPoint);\r\n\t\treturn newStr;\r\n\t}\r\n\tfunction styleComputeValueWidthVars(style, valueWithVars, details){\r\n\t\treturn findVars(valueWithVars, function(variable, fallback, insideCalc){\r\n\t\t\tvar value = style.getPropertyValue(variable);\r\n\t\t\tif (insideCalc) value = value.replace(/^calc\\(/, '('); // prevent nested calc\r\n\t\t\tif (details && style.lastPropertyServedBy !== document.documentElement) details.allByRoot = false;\r\n\t\t\tif (value==='' && fallback) value = styleComputeValueWidthVars(style, fallback, details);\r\n\t\t\treturn value;\r\n\t\t});\r\n\t}\r\n\r\n\t// mutation listener\r\n\tvar observer = new MutationObserver(function(mutations) {\r\n\t\tif (drawing) return;\r\n\t\tfor (var i=0, mutation; mutation=mutations[i++];) {\r\n\t\t\tif (mutation.attributeName === 'iecp-needed') continue; // why?\r\n\t\t\t// recheck all selectors if it targets new elements?\r\n\t\t\tdrawTree(mutation.target);\r\n\t\t}\r\n\t});\r\n\tsetTimeout(function(){\r\n\t\tobserver.observe(document,{attributes: true, subtree: true });\r\n\t})\r\n\r\n\t// :target listener\r\n\tvar oldHash = location.hash\r\n\taddEventListener('hashchange',function(e){\r\n\t\tvar newEl = document.getElementById(location.hash.substr(1));\r\n\t\tif (newEl) {\r\n\t\t\tvar oldEl = document.getElementById(oldHash.substr(1));\r\n\t\t\tdrawTree(newEl);\r\n\t\t\tdrawTree(oldEl);\r\n\t\t} else {\r\n\t\t\tdrawTree(document);\r\n\t\t}\r\n\t\toldHash = location.hash;\r\n\t});\r\n\r\n\t// add owningElement to Element.style\r\n\tvar descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'style');\r\n\tvar styleGetter = descriptor.get;\r\n\tdescriptor.get = function () {\r\n\t\tconst style = styleGetter.call(this);\r\n\t\tstyle.owningElement = this;\r\n\t\treturn style;\r\n\t}\r\n\tObject.defineProperty(HTMLElement.prototype, 'style', descriptor);\r\n\r\n\t// add computedFor to computed style-objects\r\n\tvar originalGetComputed = getComputedStyle;\r\n\twindow.getComputedStyle = function (el) {\r\n\t\tvar style = originalGetComputed.apply(this, arguments);\r\n\t\tstyle.computedFor = el;\r\n\t\t//style.pseudoElt = pseudoElt; //not needed at the moment\r\n\t\treturn style;\r\n\t}\r\n\r\n\t// getPropertyValue / setProperty hooks\r\n\tvar StyleProto = CSSStyleDeclaration.prototype;\r\n\r\n\tvar oldGetP = StyleProto.getPropertyValue;\r\n\tStyleProto.getPropertyValue = function (property) {\r\n\t\tthis.lastPropertyServedBy = false;\r\n\t\tproperty = property.trim();\r\n\r\n\t\t/* *\r\n\t\tif (this.owningElement) {\r\n\t\t\tconst ieProperty = '-ieVar-'+property;\r\n\t\t\tconst iePropertyImportant = '-ieVar-❗'+property;\r\n\t\t\tlet value = this[iePropertyImportant] || this[ieProperty];\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\t// todo, test if syntax valid\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t\t/* */\r\n\r\n\t\tif (property[0] !== '-' || property[1] !== '-') return oldGetP.apply(this, arguments);\r\n\t\tconst undashed = property.substr(2);\r\n\t\tconst ieProperty = '-ie-'+undashed;\r\n\t\tconst iePropertyImportant = '-ie-❗'+undashed;\r\n\t\tlet value = decodeValue(this[iePropertyImportant] || this[ieProperty]);\r\n\r\n\t\tif (this.computedFor) { // computedStyle\r\n\t\t\tif (value !== undefined && !inheritingKeywords[value]) {\r\n\t\t\t\t//if (regHasVar.test(value)) // todo: to i need this check?!!! i think its faster without\r\n\t\t\t\t\tvalue = styleComputeValueWidthVars(this, value);\r\n\t\t\t\tthis.lastPropertyServedBy = this.computedFor;\r\n\t\t\t} else { // inherited\r\n\t\t\t\tif (inheritingKeywords[value] || !register[property] || register[property].inherits) {\r\n\t\t\t\t\t//let el = this.pseudoElt ? this.computedFor : this.computedFor.parentNode;\r\n\t\t\t\t\tlet el = this.computedFor.parentNode;\r\n\t\t\t\t\twhile (el.nodeType === 1) {\r\n\t\t\t\t\t\t// how slower would it be to getComputedStyle for every element, not just with defined ieCP_setters\r\n\t\t\t\t\t\tif (el.ieCP_setters && el.ieCP_setters[property]) {\r\n\t\t\t\t\t\t\t// i could make\r\n\t\t\t\t\t\t\t// value = el.nodeType ? getComputedStyle(this.computedFor.parentNode).getPropertyValue(property)\r\n\t\t\t\t\t\t\t// but i fear performance, stupid?\r\n\t\t\t\t\t\t\tvar style = getComputedStyle(el);\r\n\t\t\t\t\t\t\tvar tmpVal = decodeValue(style[iePropertyImportant] || style[ieProperty]);\r\n\t\t\t\t\t\t\tif (tmpVal !== undefined) {\r\n\t\t\t\t\t\t\t\t// calculated style from current element not from the element the value was inherited from! (style, value)\r\n\t\t\t\t\t\t\t\t//value = tmpVal; if (regHasVar.test(tmpVal)) // todo: to i need this check?!!! i think its faster without\r\n\t\t\t\t\t\t\t\t\tvalue = styleComputeValueWidthVars(this, tmpVal);\r\n\t\t\t\t\t\t\t\tthis.lastPropertyServedBy = el;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tel = el.parentNode;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (value==='initial') return '';\r\n\t\t}\r\n\t\t//if ((value === undefined || value === 'initial') && register[property]) value = register[property].initialValue; // todo?\r\n\t\tif (value === undefined && register[property]) value = register[property].initialValue;\r\n\t\tif (value === undefined) return '';\r\n\t\treturn value;\r\n\t};\r\n\tvar inheritingKeywords = {inherit:1,revert:1,unset:1};\r\n\r\n\tvar oldSetP = StyleProto.setProperty;\r\n\tStyleProto.setProperty = function (property, value, prio) {\r\n\t\tif (property[0] !== '-' || property[1] !== '-') return oldSetP.apply(this, arguments);\r\n\t\tconst el = this.owningElement;\r\n\t\tif (el) {\r\n\t\t\tif (!el.ieCP_setters) el.ieCP_setters = {};\r\n\t\t\tel.ieCP_setters[property] = 1;\r\n\t\t}\r\n\t\tproperty = '-ie-'+(prio==='important'?'❗':'') + property.substr(2);\r\n\t\tthis.cssText += '; ' + property + ':' + encodeValue(value) + ';';\r\n\t\t//this[property] = value;\r\n//\t\tel === document.documentElement && redrawStyleSheets(); new in drawTree\r\n\t\tel && drawTree(el); // its delayed internal\r\n\t};\r\n\r\n\r\n\t/*\r\n\tvar descriptor = Object.getOwnPropertyDescriptor(StyleProto, 'cssText');\r\n\tvar cssTextGetter = descriptor.get;\r\n\tvar cssTextSetter = descriptor.set;\r\n\t// descriptor.get = function () {\r\n\t// \tconst style = styleGetter.call(this);\r\n\t// \tstyle.owningElement = this;\r\n\t// \treturn style;\r\n\t// }\r\n\tdescriptor.set = function (css) {\r\n\t\tvar el = this.owningElement;\r\n\t\tif (el) {\r\n\t\t\tcss = rewriteCss('{'+css).substr(1);\r\n\t\t\tcssTextSetter.call(this, css);\r\n\t\t\tvar found = parseRewrittenStyle(this);\r\n\t\t\tif (found.getters) addGetterElement(el, found.getters, '%styleAttr');\r\n\t\t\tif (found.setters) addSetterElement(el, found.setters);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\treturn cssTextSetter.call(this, css);\r\n\t}\r\n\tObject.defineProperty(StyleProto, 'cssText', descriptor);\r\n\t*/\r\n\r\n\r\n\tif (!window.CSS) window.CSS = {};\r\n\tvar register = {}\r\n\tCSS.registerProperty = function(options){\r\n\t\tregister[options.name] = options;\r\n\t}\r\n\r\n\t// fix \"initial\" keyword with generated custom properties, this is not supported ad all by ie, should i make a separate \"inherit\"-polyfill?\r\n\t/*\r\n\tconst computed = getComputedStyle(document.documentElement)\r\n\tconst initials = {};\r\n\tfor (let i in computed) {\r\n\t\tinitials[i.replace(/([A-Z])/, function(x){ return '-'+x.toLowerCase(x) })] = computed[i];\r\n\t}\r\n\tinitials['display'] = 'inline';\r\n\t*/\r\n\r\n\t// utils\r\n\tfunction fetchCss(url, callback) {\r\n\t\tvar request = new XMLHttpRequest();\r\n\t\trequest.open('GET', url);\r\n\t\trequest.overrideMimeType('text/css');\r\n\t\trequest.onload = function () {\r\n\t\t\tif (request.status >= 200 && request.status < 400) {\r\n\t\t\t\tcallback(request.responseText);\r\n\t\t\t}\r\n\t\t};\r\n\t\trequest.send();\r\n\t}\r\n\r\n}();\r\n","/*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n * See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n/*global self, document, DOMException */\n\n/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\nif (\"document\" in window.self) {\n\n // Full polyfill for browsers with no classList support\n // Including IE < Edge missing SVGElement.classList\n if (!(\"classList\" in document.createElement(\"_\")) \n || document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))) {\n \n (function (view) {\n \n \"use strict\";\n \n if (!('Element' in view)) return;\n \n var\n classListProp = \"classList\"\n , protoProp = \"prototype\"\n , elemCtrProto = view.Element[protoProp]\n , objCtr = Object\n , strTrim = String[protoProp].trim || function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n }\n , arrIndexOf = Array[protoProp].indexOf || function (item) {\n var\n i = 0\n , len = this.length\n ;\n for (; i < len; i++) {\n if (i in this && this[i] === item) {\n return i;\n }\n }\n return -1;\n }\n // Vendors: please allow content code to instantiate DOMExceptions\n , DOMEx = function (type, message) {\n this.name = type;\n this.code = DOMException[type];\n this.message = message;\n }\n , checkTokenAndGetIndex = function (classList, token) {\n if (token === \"\") {\n throw new DOMEx(\n \"SYNTAX_ERR\"\n , \"An invalid or illegal string was specified\"\n );\n }\n if (/\\s/.test(token)) {\n throw new DOMEx(\n \"INVALID_CHARACTER_ERR\"\n , \"String contains an invalid character\"\n );\n }\n return arrIndexOf.call(classList, token);\n }\n , ClassList = function (elem) {\n var\n trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\")\n , classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : []\n , i = 0\n , len = classes.length\n ;\n for (; i < len; i++) {\n this.push(classes[i]);\n }\n this._updateClassName = function () {\n elem.setAttribute(\"class\", this.toString());\n };\n }\n , classListProto = ClassList[protoProp] = []\n , classListGetter = function () {\n return new ClassList(this);\n }\n ;\n // Most DOMException implementations don't allow calling DOMException's toString()\n // on non-DOMExceptions. Error's toString() is sufficient here.\n DOMEx[protoProp] = Error[protoProp];\n classListProto.item = function (i) {\n return this[i] || null;\n };\n classListProto.contains = function (token) {\n token += \"\";\n return checkTokenAndGetIndex(this, token) !== -1;\n };\n classListProto.add = function () {\n var\n tokens = arguments\n , i = 0\n , l = tokens.length\n , token\n , updated = false\n ;\n do {\n token = tokens[i] + \"\";\n if (checkTokenAndGetIndex(this, token) === -1) {\n this.push(token);\n updated = true;\n }\n }\n while (++i < l);\n \n if (updated) {\n this._updateClassName();\n }\n };\n classListProto.remove = function () {\n var\n tokens = arguments\n , i = 0\n , l = tokens.length\n , token\n , updated = false\n , index\n ;\n do {\n token = tokens[i] + \"\";\n index = checkTokenAndGetIndex(this, token);\n while (index !== -1) {\n this.splice(index, 1);\n updated = true;\n index = checkTokenAndGetIndex(this, token);\n }\n }\n while (++i < l);\n \n if (updated) {\n this._updateClassName();\n }\n };\n classListProto.toggle = function (token, force) {\n token += \"\";\n \n var\n result = this.contains(token)\n , method = result ?\n force !== true && \"remove\"\n :\n force !== false && \"add\"\n ;\n \n if (method) {\n this[method](token);\n }\n \n if (force === true || force === false) {\n return force;\n } else {\n return !result;\n }\n };\n classListProto.toString = function () {\n return this.join(\" \");\n };\n \n if (objCtr.defineProperty) {\n var classListPropDesc = {\n get: classListGetter\n , enumerable: true\n , configurable: true\n };\n try {\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n } catch (ex) { // IE 8 doesn't support enumerable:true\n // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n if (ex.number === undefined || ex.number === -0x7FF5EC54) {\n classListPropDesc.enumerable = false;\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n }\n }\n } else if (objCtr[protoProp].__defineGetter__) {\n elemCtrProto.__defineGetter__(classListProp, classListGetter);\n }\n \n }(window.self));\n \n }\n \n // There is full or partial native classList support, so just check if we need\n // to normalize the add/remove and toggle APIs.\n \n (function () {\n \"use strict\";\n \n var testElement = document.createElement(\"_\");\n \n testElement.classList.add(\"c1\", \"c2\");\n \n // Polyfill for IE 10/11 and Firefox <26, where classList.add and\n // classList.remove exist but support only one argument at a time.\n if (!testElement.classList.contains(\"c2\")) {\n var createMethod = function(method) {\n var original = DOMTokenList.prototype[method];\n \n DOMTokenList.prototype[method] = function(token) {\n var i, len = arguments.length;\n \n for (i = 0; i < len; i++) {\n token = arguments[i];\n original.call(this, token);\n }\n };\n };\n createMethod('add');\n createMethod('remove');\n }\n \n testElement.classList.toggle(\"c3\", false);\n \n // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n // support the second argument.\n if (testElement.classList.contains(\"c3\")) {\n var _toggle = DOMTokenList.prototype.toggle;\n \n DOMTokenList.prototype.toggle = function(token, force) {\n if (1 in arguments && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n \n }\n \n testElement = null;\n }());\n \n }","(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('remove')) {\n return;\n }\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n this.parentNode && this.parentNode.removeChild(this);\n }\n });\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype].filter(Boolean));\n","if (!String.prototype.endsWith) {\n\tString.prototype.endsWith = function(search, this_len) {\n\t\tif (this_len === undefined || this_len > this.length) {\n\t\t\tthis_len = this.length;\n\t\t}\n\t\treturn this.substring(this_len - search.length, this_len) === search;\n\t};\n}","if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}","(function () {\n\n if ( typeof window.CustomEvent === \"function\" ) return false;\n \n function CustomEvent ( event, params ) {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent( 'CustomEvent' );\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\n return evt;\n }\n \n window.CustomEvent = CustomEvent;\n })();","if (typeof Object.assign !== 'function') {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) { // .length of function is 2\n 'use strict';\n if (target === null || target === undefined) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n \n var to = Object(target);\n \n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n \n if (nextSource !== null && nextSource !== undefined) { \n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true\n });\n }","if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || \n Element.prototype.webkitMatchesSelector;\n }\n \n if (!Element.prototype.closest) {\n Element.prototype.closest = function(s) {\n var el = this;\n \n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }","(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('append')) {\n return;\n }\n Object.defineProperty(item, 'append', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function append() {\n var argArr = Array.prototype.slice.call(arguments),\n docFrag = document.createDocumentFragment();\n \n argArr.forEach(function (argItem) {\n var isNode = argItem instanceof Node;\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\n });\n \n this.appendChild(docFrag);\n }\n });\n });\n })([Element.prototype, Document.prototype, DocumentFragment.prototype]);","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function() {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function(obj) {\n if (typeof obj !== 'function' && (typeof obj !== 'object' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}","if (![].keys) {\n Array.prototype.keys = function () {\n var k, a = [], nextIndex = 0, ary = this;\n k = ary.length;\n while (k > 0) a[--k] = k;\n a.next = function () {\n return nextIndex < ary.length ?\n { value: nextIndex++, done: false } :\n { done: true };\n };\n return a;\n };\n}","// Production steps of ECMA-262, Edition 6, 22.1.2.1\nif (!Array.from) {\n Array.from = (function () {\n var toStr = Object.prototype.toString;\n var isCallable = function (fn) {\n return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n };\n var toInteger = function (value) {\n var number = Number(value);\n if (isNaN(number)) { return 0; }\n if (number === 0 || !isFinite(number)) { return number; }\n return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n };\n var maxSafeInteger = Math.pow(2, 53) - 1;\n var toLength = function (value) {\n var len = toInteger(value);\n return Math.min(Math.max(len, 0), maxSafeInteger);\n };\n \n // The length property of the from method is 1.\n return function from(arrayLike/*, mapFn, thisArg */) {\n // 1. Let C be the this value.\n var C = this;\n \n // 2. Let items be ToObject(arrayLike).\n var items = Object(arrayLike);\n \n // 3. ReturnIfAbrupt(items).\n if (arrayLike == null) {\n throw new TypeError('Array.from requires an array-like object - not null or undefined');\n }\n \n // 4. If mapfn is undefined, then let mapping be false.\n var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\n var T;\n if (typeof mapFn !== 'undefined') {\n // 5. else\n // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\n if (!isCallable(mapFn)) {\n throw new TypeError('Array.from: when provided, the second argument must be a function');\n }\n \n // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 2) {\n T = arguments[2];\n }\n }\n \n // 10. Let lenValue be Get(items, \"length\").\n // 11. Let len be ToLength(lenValue).\n var len = toLength(items.length);\n \n // 13. If IsConstructor(C) is true, then\n // 13. a. Let A be the result of calling the [[Construct]] internal method \n // of C with an argument list containing the single item len.\n // 14. a. Else, Let A be ArrayCreate(len).\n var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n \n // 16. Let k be 0.\n var k = 0;\n // 17. Repeat, while k < len… (also steps a - h)\n var kValue;\n while (k < len) {\n kValue = items[k];\n if (mapFn) {\n A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n } else {\n A[k] = kValue;\n }\n k += 1;\n }\n // 18. Let putStatus be Put(A, \"length\", len, true).\n A.length = len;\n // 20. Return A.\n return A;\n };\n }());\n }","var passiveSupported = false\nvar onceSupported = false\nfunction noop() {}\ntry {\n var options = Object.create({}, {\n passive: {get: function() { passiveSupported = true }},\n once: {get: function() { onceSupported = true }},\n })\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop, options)\n} catch (e) { /* */ }\n\nvar enhance = module.exports = function enhance(proto) {\n var originalAddEventListener = proto.addEventListener\n var originalRemoveEventListener = proto.removeEventListener\n\n var listeners = new WeakMap()\n proto.addEventListener = function(name, originalCallback, optionsOrCapture) {\n if (\n optionsOrCapture === undefined ||\n optionsOrCapture === true ||\n optionsOrCapture === false ||\n (!originalCallback || typeof originalCallback !== 'function' && typeof originalCallback !== 'object')\n ) {\n return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture)\n }\n\n var callback = typeof originalCallback !== 'function' && typeof originalCallback.handleEvent === 'function' ? originalCallback.handleEvent.bind(originalCallback) : originalCallback\n var options = typeof optionsOrCapture === 'boolean' ? {capture: optionsOrCapture} : optionsOrCapture || {}\n var passive = Boolean(options.passive)\n var once = Boolean(options.once)\n var capture = Boolean(options.capture)\n var oldCallback = callback\n\n if (!onceSupported && once) {\n callback = function(event) {\n this.removeEventListener(name, originalCallback, options)\n oldCallback.call(this, event)\n }\n }\n\n if (!passiveSupported && passive) {\n callback = function(event) {\n event.preventDefault = noop\n oldCallback.call(this, event)\n }\n }\n\n if (!listeners.has(this)) listeners.set(this, new WeakMap())\n var elementMap = listeners.get(this)\n if (!elementMap.has(originalCallback)) elementMap.set(originalCallback, [])\n var optionsOctal = (passive * 1) + (once * 2) + (capture * 4)\n elementMap.get(originalCallback)[optionsOctal] = callback\n\n originalAddEventListener.call(this, name, callback, capture)\n }\n\n proto.removeEventListener = function(name, originalCallback, optionsOrCapture) {\n var capture = Boolean(typeof optionsOrCapture === 'object' ? optionsOrCapture.capture : optionsOrCapture)\n\n var elementMap = listeners.get(this)\n if (!elementMap) return originalRemoveEventListener.call(this, name, originalCallback, optionsOrCapture)\n var callbacks = elementMap.get(originalCallback)\n if (!callbacks) return originalRemoveEventListener.call(this, name, originalCallback, optionsOrCapture)\n\n for (var optionsOctal in callbacks) {\n var callbackIsCapture = Boolean(optionsOctal & 4)\n if (callbackIsCapture !== capture) continue // when unbinding, capture is the only option that counts\n originalRemoveEventListener.call(this, name, callbacks[optionsOctal], callbackIsCapture)\n }\n\n }\n\n}\n\nif (!passiveSupported || !onceSupported) {\n\n if (typeof EventTarget !== 'undefined') {\n enhance(EventTarget.prototype)\n } else {\n enhance(Text.prototype)\n enhance(HTMLElement.prototype)\n enhance(HTMLDocument.prototype)\n enhance(Window.prototype)\n enhance(XMLHttpRequest.prototype)\n }\n\n}\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzUiIGhlaWdodD0iNDAiPjxwYXRoIGZpbGw9IiNBNkE2QTYiIGQ9Ik0xMzAuMiA0MEg0LjczQTQuNzQgNC43NCAwIDAgMSAwIDM1LjI3VjQuNzNDMCAyLjEyIDIuMTIgMCA0LjczIDBIMTMwLjJhNC44IDQuOCAwIDAgMSA0LjggNC43M3YzMC41NGE0LjggNC44IDAgMCAxLTQuOCA0LjczeiIvPjxwYXRoIGQ9Ik0xMzQuMDMgMzUuMjdhMy44MyAzLjgzIDAgMCAxLTMuODMgMy44M0g0LjczYTMuODMgMy44MyAwIDAgMS0zLjg0LTMuODNWNC43MkEzLjg0IDMuODQgMCAwIDEgNC43My45SDEzMC4yYTMuODMgMy44MyAwIDAgMSAzLjgzIDMuODN2MzAuNTV6Ii8+PHBhdGggZD0iTTMwLjEzIDE5Ljc4Yy0uMDMtMy4yMiAyLjY0LTQuNzkgMi43Ni00Ljg2YTUuOTQgNS45NCAwIDAgMC00LjY4LTIuNTNjLTEuOTYtLjItMy44NyAxLjE4LTQuODcgMS4xOC0xLjAzIDAtMi41Ny0xLjE2LTQuMjMtMS4xMmE2LjIzIDYuMjMgMCAwIDAtNS4yNCAzLjJjLTIuMjcgMy45MS0uNTggOS42OCAxLjYgMTIuODUgMS4wOCAxLjU1IDIuMzUgMy4yOSA0IDMuMjMgMS42My0uMDcgMi4yNC0xLjA0IDQuMi0xLjA0IDEuOTUgMCAyLjUyIDEuMDQgNC4yIDEgMS43NS0uMDMgMi44NS0xLjU2IDMuOS0zLjEzYTEyLjgzIDEyLjgzIDAgMCAwIDEuNzgtMy42MiA1LjYgNS42IDAgMCAxLTMuNDItNS4xNnptLTMuMi05LjQ3YTUuNyA1LjcgMCAwIDAgMS4zLTQuMSA1LjgxIDUuODEgMCAwIDAtMy43NSAxLjk1IDUuNDMgNS40MyAwIDAgMC0xLjM0IDMuOTQgNC44IDQuOCAwIDAgMCAzLjc5LTEuOHpNNTMuNjUgMzEuNWgtMi4yOGwtMS4yNC0zLjloLTQuMzJsLTEuMTkgMy45aC0yLjIxbDQuMjgtMTMuM2gyLjY1bDQuMyAxMy4zem0tMy45LTUuNTRsLTEuMTItMy40OGMtLjEyLS4zNS0uMzQtMS4yLS42Ny0yLjVoLS4wNGMtLjEzLjU2LS4zNCAxLjQtLjYzIDIuNWwtMS4xIDMuNDhoMy41N3ptMTQuOTEuNjNjMCAxLjYzLS40NCAyLjkyLTEuMzIgMy44N2EzLjg3IDMuODcgMCAwIDEtMi45NCAxLjI2Yy0xLjI3IDAtMi4xNy0uNDUtMi43My0xLjM2aC0uMDR2NS4wNUg1NS41VjI1LjA3YzAtMS4wMy0uMDMtMi4wOC0uMDgtMy4xNmgxLjg4bC4xMiAxLjUyaC4wM2EzLjU1IDMuNTUgMCAwIDEgMy4yNC0xLjcyYzEuMTQgMCAyLjA4LjQ1IDIuODQgMS4zNC43NS45IDEuMTMgMi4wOCAxLjEzIDMuNTR6bS0yLjE3LjA4YzAtLjk0LS4yMS0xLjctLjYzLTIuMzFBMi4xOCAyLjE4IDAgMCAwIDYwIDIzLjRjLS41MiAwLTEgLjE3LTEuNDMuNTItLjQzLjM1LS43LjgtLjg0IDEuMzctLjA2LjI3LS4xLjQ4LS4xLjY1djEuNmMwIC43LjIyIDEuMy42NSAxLjc3cy45OC43MiAxLjY2LjcyYy44IDAgMS40My0uMyAxLjg4LS45Mi40NS0uNjIuNjctMS40NC42Ny0yLjQ1em0xMy4yLS4wOGMwIDEuNjMtLjQzIDIuOTItMS4zMSAzLjg3YTMuODYgMy44NiAwIDAgMS0yLjk1IDEuMjZjLTEuMjYgMC0yLjE3LS40NS0yLjcyLTEuMzZoLS4wNHY1LjA1aC0yLjEzVjI1LjA3YzAtMS4wMy0uMDMtMi4wOC0uMDgtMy4xNmgxLjg3bC4xMiAxLjUyaC4wNGEzLjU1IDMuNTUgMCAwIDEgMy4yNC0xLjcyYzEuMTMgMCAyLjA4LjQ1IDIuODMgMS4zNGE1LjMgNS4zIDAgMCAxIDEuMTQgMy41NHptLTIuMTYuMDhjMC0uOTQtLjIxLTEuNy0uNjQtMi4zMWEyLjE4IDIuMTggMCAwIDAtMS44NS0uOTVjLS41MyAwLTEgLjE3LTEuNDMuNTItLjQzLjM1LS43MS44LS44NCAxLjM3LS4wNy4yNy0uMS40OC0uMS42NXYxLjZjMCAuNy4yMSAxLjMuNjQgMS43Ny40My40OC45OC43MiAxLjY3LjcyLjggMCAxLjQzLS4zIDEuODgtLjkyLjQ0LS42Mi42Ny0xLjQ0LjY3LTIuNDV6bTE0LjUgMS4xYzAgMS4xMy0uMzggMi4wNS0xLjE3IDIuNzdhNS4yNCA1LjI0IDAgMCAxLTMuNjMgMS4xNiA2LjM1IDYuMzUgMCAwIDEtMy40NS0uODNsLjUtMS43OGMuOTMuNTcgMS45Ni44NSAzLjA4Ljg1LjggMCAxLjQzLS4xOCAxLjg4LS41NC40NC0uMzYuNjctLjg1LjY3LTEuNDUgMC0uNTQtLjE5LTEtLjU2LTEuMzdhNS4xNCA1LjE0IDAgMCAwLTEuODMtMS4wM2MtMi4zMy0uODctMy41LTIuMTQtMy41LTMuODEgMC0xLjEuNDEtMiAxLjIzLTIuNy44MS0uNjkgMS45LTEuMDQgMy4yNi0xLjA0IDEuMiAwIDIuMjEuMjEgMy4wMi42M2wtLjU0IDEuNzRjLS43NS0uNC0xLjYtLjYxLTIuNTQtLjYxLS43NSAwLTEuMzQuMTgtMS43Ni41NS0uMzYuMzMtLjUzLjczLS41MyAxLjIgMCAuNTMuMi45Ny42IDEuMzEuMzYuMzIgMSAuNjYgMS45NCAxLjAzIDEuMTUuNDYgMS45OSAxIDIuNTMgMS42Mi41NC42MS44IDEuMzguOCAyLjN6bTcuMDYtNC4yNmgtMi4zNXY0LjY2YzAgMS4xOC40MSAxLjc3IDEuMjQgMS43Ny4zOCAwIC43LS4wMy45NS0uMWwuMDYgMS42MmMtLjQyLjE2LS45Ny4yNC0xLjY2LjI0LS44NCAwLTEuNS0uMjYtMS45OC0uNzctLjQ3LS41MS0uNy0xLjM4LS43LTIuNTl2LTQuODNoLTEuNHYtMS42aDEuNHYtMS43NmwyLjA5LS42M3YyLjM5aDIuMzV2MS42em0xMC42IDMuMTJjMCAxLjQ3LS40MiAyLjY4LTEuMjYgMy42M2E0LjUxIDQuNTEgMCAwIDEtMy41MiAxLjQ2Yy0xLjQgMC0yLjUzLS40Ny0zLjM2LTEuNHMtMS4yNi0yLjExLTEuMjYtMy41M2MwLTEuNS40My0yLjcgMS4zLTMuNjZhNC40NyA0LjQ3IDAgMCAxIDMuNDgtMS40MmMxLjQgMCAyLjU0LjQ3IDMuNCAxLjQuODEuOTEgMS4yMiAyLjA4IDEuMjIgMy41MnptLTIuMjEuMDdjMC0uODktLjE5LTEuNjUtLjU3LTIuMjhhMi4xIDIuMSAwIDAgMC0xLjkyLTEuMTVjLS44NSAwLTEuNS4zOC0xLjk1IDEuMTVhNC40IDQuNCAwIDAgMC0uNTcgMi4zMmMwIC44OC4xOCAxLjY0LjU3IDIuMjcuNDYuNzcgMS4xIDEuMTUgMS45MyAxLjE1LjgyIDAgMS40Ni0uMzkgMS45Mi0xLjE3LjQtLjY0LjU5LTEuNDEuNTktMi4zem05LjE0LTIuOTJhMy43IDMuNyAwIDAgMC0uNjctLjA2Yy0uNzUgMC0xLjMzLjI5LTEuNzQuODVhMy4yIDMuMiAwIDAgMC0uNTMgMS45djUuMDNoLTIuMTNsLjAyLTYuNTdjMC0xLjEtLjAzLTIuMTEtLjA4LTMuMDJoMS44NWwuMDggMS44M2guMDZjLjIzLS42My41OC0xLjEzIDEuMDctMS41Mi40Ny0uMzQuOTgtLjUgMS41NC0uNS4yIDAgLjM3IDAgLjUzLjAzdjIuMDN6bTkuNTQgMi40N2E1IDUgMCAwIDEtLjA4Ljk3aC02LjRjLjAzLjk1LjM0IDEuNjcuOTMgMi4xNy41NC40NSAxLjI0LjY3IDIuMS42Ny45NCAwIDEuOC0uMTUgMi41OC0uNDVsLjMzIDEuNDhhOCA4IDAgMCAxLTMuMjEuNiA0LjY2IDQuNjYgMCAwIDEtMy41LTEuMzIgNC44NSA0Ljg1IDAgMCAxLTEuMjgtMy41M2MwLTEuNDQuNC0yLjY1IDEuMTgtMy42YTQuMDkgNC4wOSAwIDAgMSAzLjM2LTEuNTVjMS4zOCAwIDIuNDMuNTIgMy4xNCAxLjU0LjU2LjgyLjg1IDEuODIuODUgMy4wMnptLTIuMDQtLjU1YTIuOSAyLjkgMCAwIDAtLjQxLTEuNjRjLS4zNy0uNi0uOTQtLjg5LTEuNy0uODktLjcgMC0xLjI2LjI5LTEuNy44N2EzLjE4IDMuMTggMCAwIDAtLjYzIDEuNjZoNC40NHpNNDkuMDUgMTBjMCAxLjE5LS4zNSAyLjA3LTEuMDYgMi42N2E0LjIgNC4yIDAgMCAxLTIuNzguODJjLS42IDAtMS4xLS4wMy0xLjUzLS4wOFY2Ljk4Yy41NS0uMDkgMS4xNS0uMTMgMS44LS4xMyAxLjE1IDAgMiAuMjUgMi42Ljc0LjY0LjU3Ljk3IDEuMzcuOTcgMi40MnptLTEuMS4wNGMwLS43Ni0uMi0xLjM1LS42MS0xLjc2LS40LS40LTEtLjYtMS43Ny0uNi0uMzMgMC0uNjEuMDEtLjg1LjA2djQuODljLjEzLjAyLjM3LjAzLjcxLjAzLjggMCAxLjQyLS4yMyAxLjg2LS42N3MuNjUtMS4xLjY1LTEuOTV6bTYuOTYgMWMwIC43Mi0uMiAxLjMyLS42MiAxLjc4LS40NC40OC0xLjAxLjcyLTEuNzMuNzJhMi4xIDIuMSAwIDAgMS0xLjY1LS42OSAyLjUgMi41IDAgMCAxLS42Mi0xLjczYzAtLjczLjIxLTEuMzMuNjQtMS44czEtLjcgMS43LS43IDEuMjYuMjMgMS42OC43Yy40LjQ0LjYgMS4wMS42IDEuNzJ6bS0xLjA5LjAzYzAtLjQzLS4xLS44LS4yOC0xLjEyYTEuMDMgMS4wMyAwIDAgMC0uOTQtLjU2Yy0uNDIgMC0uNzQuMTktLjk2LjU2LS4xOS4zMS0uMjguNy0uMjggMS4xNCAwIC40NC4xLjguMjggMS4xMi4yMy4zOC41NC41Ni45NS41Ni40IDAgLjcxLS4xOS45NC0uNTcuMi0uMzIuMy0uNy4zLTEuMTN6bTguOTUtMi4zNWwtMS40OCA0LjcxaC0uOTZsLS42MS0yLjA0Yy0uMTYtLjUyLS4yOC0xLjAyLS4zOC0xLjUzaC0uMDJjLS4wOS41Mi0uMjIgMS4wMy0uMzggMS41M2wtLjY1IDIuMDRoLS45N2wtMS4zOC00LjcxSDU3bC41NCAyLjI0Yy4xMi41My4yMyAxLjAzLjMyIDEuNTFoLjAxYy4wOC0uNC4yMS0uOS40LTEuNWwuNjYtMi4yNWguODZsLjY0IDIuMmMuMTUuNTQuMjggMS4wNi4zOCAxLjU1aC4wMmMuMDgtLjQ4LjE4LTEgLjMyLTEuNTVsLjU4LTIuMmgxLjAzem01LjQzIDQuNzFoLTEuMDV2LTIuN2MwLS44My0uMzItMS4yNC0uOTUtMS4yNGEuOTUuOTUgMCAwIDAtLjc2LjM0Yy0uMTkuMjMtLjI5LjUtLjI5Ljh2Mi44SDY0LjF2LTMuMzZjMC0uNDIgMC0uODctLjAzLTEuMzVoLjkybC4wNS43M2guMDNjLjEyLS4yMi4zLS40MS41NC0uNTYuMjgtLjE4LjYtLjI3Ljk1LS4yNy40NCAwIC44LjE0IDEuMS40My4zNi4zNS41NC44Ny41NCAxLjU2djIuODJ6bTIuODkgMGgtMS4wNVY2LjU2aDEuMDV2Ni44N3ptNi4xNy0yLjRjMCAuNzMtLjIgMS4zMy0uNjIgMS44LS40NC40Ny0xLjAxLjcxLTEuNzMuNzFhMi4xIDIuMSAwIDAgMS0xLjY1LS42OSAyLjUgMi41IDAgMCAxLS42Mi0xLjczYzAtLjczLjIxLTEuMzMuNjQtMS44cy45OS0uNyAxLjctLjdjLjcgMCAxLjI2LjIzIDEuNjguNy40LjQ0LjYgMS4wMS42IDEuNzJ6bS0xLjA5LjA0YzAtLjQzLS4xLS44LS4yOC0xLjEyYTEuMDMgMS4wMyAwIDAgMC0uOTQtLjU2Yy0uNDIgMC0uNzQuMTktLjk2LjU2LS4xOS4zMS0uMjguNy0uMjggMS4xNCAwIC40NC4xLjguMjggMS4xMi4yMy4zOC41NC41Ni45NS41Ni40IDAgLjcxLS4xOS45NC0uNTcuMi0uMzIuMjktLjcuMjktMS4xM3ptNi4xNiAyLjM2aC0uOTRsLS4wOC0uNTRoLS4wM2MtLjMyLjQzLS43OC42NS0xLjM4LjY1LS40NCAwLS44LS4xNC0xLjA3LS40M2ExLjM0IDEuMzQgMCAwIDEtLjM3LS45NmMwLS41Ny4yNC0xLjAxLjcyLTEuMzIuNDktLjMgMS4xNi0uNDUgMi4wNC0uNDR2LS4wOWMwLS42Mi0uMzMtLjkzLS45OC0uOTMtLjQ3IDAtLjg4LjEyLTEuMjMuMzVsLS4yMS0uNjljLjQzLS4yNy45Ny0uNCAxLjYxLS40IDEuMjMgMCAxLjg1LjY0IDEuODUgMS45NHYxLjc0YzAgLjQ3LjAzLjg0LjA3IDEuMTJ6bS0xLjA5LTEuNjJ2LS43MmMtMS4xNS0uMDItMS43My4zLTEuNzMuOTUgMCAuMjQuMDYuNDMuMi41NS4xMy4xMi4zLjE4LjUxLjE4LjIzIDAgLjQ1LS4wNy42NC0uMjJhLjkuOSAwIDAgMCAuMzgtLjc0em03LjA1IDEuNjJoLS45NGwtLjA0LS43NWgtLjAzYy0uMy41Ny0uOC44Ni0xLjUyLjg2LS41NyAwLTEuMDQtLjIyLTEuNDEtLjY3cy0uNTctMS4wMi0uNTctMS43M2MwLS43Ny4yLTEuMzkuNjItMS44Ni40LS40NC44Ny0uNjYgMS40NS0uNjYuNjMgMCAxLjA4LjIyIDEuMzMuNjRoLjAydi0yLjdoMS4wNXY1LjZjMCAuNDYuMDEuODkuMDQgMS4yN3ptLTEuMS0xLjk4di0uOGMwLS4xMyAwLS4yNC0uMDItLjMyYTEuMiAxLjIgMCAwIDAtLjM4LS42NGMtLjItLjE3LS40My0uMjUtLjctLjI1LS40IDAtLjcuMTUtLjkyLjQ2YTIgMiAwIDAgMC0uMzQgMS4yYzAgLjQ2LjEuODQuMzIgMS4xMy4yMy4zMS41NC40Ny45Mi40Ny4zNCAwIC42Mi0uMTMuODMtLjQuMi0uMjMuMy0uNTIuMy0uODZ6bTEwLjA2LS40MWMwIC43Mi0uMiAxLjMyLS42MiAxLjc4LS40NC40OC0xLjAxLjcyLTEuNzMuNzItLjcgMC0xLjI0LS4yMy0xLjY1LS42OWEyLjUgMi41IDAgMCAxLS42Mi0xLjczYzAtLjczLjIxLTEuMzMuNjQtMS44cy45OS0uNyAxLjctLjdjLjcgMCAxLjI2LjIzIDEuNjguNy40LjQ0LjYgMS4wMS42IDEuNzJ6bS0xLjA5LjAzYzAtLjQzLS4xLS44LS4yOC0xLjEyYTEuMDQgMS4wNCAwIDAgMC0uOTQtLjU2Yy0uNDIgMC0uNzQuMTktLjk2LjU2LS4xOS4zMS0uMjguNy0uMjggMS4xNCAwIC40NC4xLjguMjggMS4xMi4yMy4zOC41NC41Ni45NS41Ni40IDAgLjcxLS4xOS45NC0uNTcuMi0uMzIuMy0uNy4zLTEuMTN6bTYuNzIgMi4zNmgtMS4wNHYtMi43YzAtLjgzLS4zMi0xLjI0LS45Ni0xLjI0LS4zIDAtLjU2LjEtLjc1LjM0cy0uMy41LS4zLjh2Mi44SDk4Ljh2LTMuMzZjMC0uNDItLjAxLS44Ny0uMDQtMS4zNWguOTJsLjA1LjczaC4wM2MuMTItLjIyLjMtLjQxLjU0LS41Ni4yOS0uMTguNi0uMjcuOTUtLjI3LjQ0IDAgLjguMTQgMS4xLjQzLjM2LjM1LjU0Ljg3LjU0IDEuNTZ2Mi44MnptNy4wNi0zLjkzaC0xLjE2djIuM2MwIC41OC4yLjg3LjYxLjg3LjIgMCAuMzUtLjAyLjQ3LS4wNWwuMDMuOGMtLjIxLjA3LS40OC4xMS0uODIuMTEtLjQxIDAtLjczLS4xMy0uOTctLjM4LS4yMy0uMjUtLjM1LS42Ny0uMzUtMS4yN1Y5LjVoLS42OHYtLjc4aC42OHYtLjg3bDEuMDMtLjN2MS4xN2gxLjE2di43OHptNS41NCAzLjkzaC0xLjA1di0yLjY4YzAtLjg0LS4zMS0xLjI2LS45NC0xLjI2LS40OSAwLS44Mi4yNC0xIC43My0uMDQuMS0uMDUuMjMtLjA1LjM4djIuODNoLTEuMDVWNi41NmgxLjA1VjkuNGguMDJjLjMzLS41Mi44LS43OCAxLjQxLS43OC40NCAwIC44LjE0IDEuMDguNDMuMzYuMzUuNTMuODguNTMgMS41OHYyLjh6bTUuNzMtMi41OGMwIC4yLS4wMi4zNS0uMDQuNDhoLTMuMTVjLjAyLjQ2LjE3LjgyLjQ2IDEuMDYuMjcuMjIuNi4zMyAxLjAzLjMzLjQ2IDAgLjg5LS4wNyAxLjI3LS4yMmwuMTYuNzNjLS40NC4yLS45Ny4zLTEuNTguMy0uNzMgMC0xLjMtLjIyLTEuNzItLjY1LS40Mi0uNDMtLjYyLTEuMDEtLjYyLTEuNzQgMC0uNy4xOS0xLjMuNTgtMS43N2EyIDIgMCAwIDEgMS42NS0uNzZjLjY3IDAgMS4xOS4yNiAxLjU0Ljc2LjI4LjQuNDIuOS40MiAxLjQ4em0tMS0uMjdjMC0uMy0uMDYtLjU4LS4yLS44YS45Mi45MiAwIDAgMC0uODQtLjQ0IDEgMSAwIDAgMC0uODMuNDNjLS4xOC4yMi0uMjguNS0uMzIuODFoMi4xOXoiIGZpbGw9IiNGRkYiLz48L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQwIiB3aWR0aD0iMTM1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48bGluZWFyR3JhZGllbnQgaWQ9ImEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAyMDIpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjMxLjgiIHgyPSIxNS4wMiIgeTE9IjE4My4yOSIgeTI9IjE2Ni41MSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDBhMGZmIi8+PHN0b3Agb2Zmc2V0PSIuMDEiIHN0b3AtY29sb3I9IiMwMGExZmYiLz48c3RvcCBvZmZzZXQ9Ii4yNiIgc3RvcC1jb2xvcj0iIzAwYmVmZiIvPjxzdG9wIG9mZnNldD0iLjUxIiBzdG9wLWNvbG9yPSIjMDBkMmZmIi8+PHN0b3Agb2Zmc2V0PSIuNzYiIHN0b3AtY29sb3I9IiMwMGRmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMGUzZmYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDIwMikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDMuODMiIHgyPSIxOS42NCIgeTE9IjE3MiIgeTI9IjE3MiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZlMDAwIi8+PHN0b3Agb2Zmc2V0PSIuNDEiIHN0b3AtY29sb3I9IiNmZmJkMDAiLz48c3RvcCBvZmZzZXQ9Ii43OCIgc3RvcC1jb2xvcj0iI2ZmYTUwMCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmOWMwMCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjAyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzNC44MyIgeDI9IjEyLjA3IiB5MT0iMTY5LjciIHkyPSIxNDYuOTUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmM2E0NCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2MzMTE2MiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJkIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjAyKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxNy4zIiB4Mj0iMjcuNDYiIHkxPSIxOTEuODIiIHkyPSIxODEuNjYiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzMyYTA3MSIvPjxzdG9wIG9mZnNldD0iLjA3IiBzdG9wLWNvbG9yPSIjMmRhNzcxIi8+PHN0b3Agb2Zmc2V0PSIuNDgiIHN0b3AtY29sb3I9IiMxNWNmNzQiLz48c3RvcCBvZmZzZXQ9Ii44IiBzdG9wLWNvbG9yPSIjMDZlNzc1Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDBmMDc2Ii8+PC9saW5lYXJHcmFkaWVudD48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAgLTEwKSI+PHJlY3QgaGVpZ2h0PSI0MCIgcng9IjUiIHdpZHRoPSIxMzUiIHg9IjEwIiB5PSIxMCIvPjxwYXRoIGQ9Im0xNDAgMTAuOGE0LjIgNC4yIDAgMCAxIDQuMiA0LjJ2MzBhNC4yIDQuMiAwIDAgMSAtNC4yIDQuMmgtMTI1YTQuMiA0LjIgMCAwIDEgLTQuMi00LjJ2LTMwYTQuMiA0LjIgMCAwIDEgNC4yLTQuMnptMC0uOGgtMTI1YTUgNSAwIDAgMCAtNSA1djMwYTUgNSAwIDAgMCA1IDVoMTI1YTUgNSAwIDAgMCA1LTV2LTMwYTUgNSAwIDAgMCAtNS01eiIgZmlsbD0iI2E2YTZhNiIvPjxwYXRoIGQ9Im01Ny40MiAyMC4yNGEyLjcxIDIuNzEgMCAwIDEgLS43NSAyIDIuOTEgMi45MSAwIDAgMSAtMi4yLjg5IDMuMTUgMy4xNSAwIDAgMSAtMi4yMS01LjM3IDMgMyAwIDAgMSAyLjIxLS45IDMuMSAzLjEgMCAwIDEgMS4yMy4yNSAyLjQ3IDIuNDcgMCAwIDEgLjk0LjY3bC0uNTMuNTNhMiAyIDAgMCAwIC0xLjY0LS43MSAyLjMyIDIuMzIgMCAwIDAgLTIuMzMgMi40IDIuMzYgMi4zNiAwIDAgMCA0IDEuNzMgMS44OSAxLjg5IDAgMCAwIC41LTEuMjJoLTIuMTd2LS43MmgyLjkxYTIuNTQgMi41NCAwIDAgMSAuMDQuNDV6bTQuNTgtMi41aC0yLjd2MS45aDIuNDZ2LjcyaC0yLjQ2djEuOWgyLjd2Ljc0aC0zLjV2LTZoMy41em0zLjI4IDUuMjZoLS43N3YtNS4yNmgtMS42OHYtLjc0aDQuMTd2Ljc0aC0xLjcyem00LjY2IDB2LTZoLjc3djZ6bTQuMTkgMGgtLjc3di01LjI2aC0xLjY4di0uNzRoNC4xMnYuNzRoLTEuNjd6bTkuNDgtLjc4YTMuMTIgMy4xMiAwIDAgMSAtNC40IDAgMy4yNCAzLjI0IDAgMCAxIDAtNC40NSAzLjEgMy4xIDAgMCAxIDQuNCAwIDMuMjMgMy4yMyAwIDAgMSAwIDQuNDV6bS0zLjgzLS41YTIuMzEgMi4zMSAwIDAgMCAzLjI2IDAgMi41NiAyLjU2IDAgMCAwIDAtMy40NCAyLjMxIDIuMzEgMCAwIDAgLTMuMjYgMCAyLjU2IDIuNTYgMCAwIDAgMCAzLjQ0em01LjggMS4yOHYtNmguOTRsMi45MiA0LjY3di00LjY3aC43N3Y2aC0uOGwtMy4wNS00Ljg5djQuODl6IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuMiIvPjxwYXRoIGQ9Im03OC4xNCAzMS43NWE0LjI1IDQuMjUgMCAxIDAgNC4yNyA0LjI1IDQuMTkgNC4xOSAwIDAgMCAtNC4yNy00LjI1em0wIDYuODNhMi41OCAyLjU4IDAgMSAxIDIuNC0yLjU4IDIuNDYgMi40NiAwIDAgMSAtMi40IDIuNTh6bS05LjMxLTYuODNhNC4yNSA0LjI1IDAgMSAwIDQuMjYgNC4yNSA0LjE5IDQuMTkgMCAwIDAgLTQuMjctNC4yNXptMCA2LjgzYTIuNTggMi41OCAwIDEgMSAyLjM5LTIuNTggMi40NiAyLjQ2IDAgMCAxIC0yLjQgMi41OHptLTExLjA5LTUuNTJ2MS44aDQuMzJhMy43NyAzLjc3IDAgMCAxIC0xIDIuMjcgNC40MiA0LjQyIDAgMCAxIC0zLjMzIDEuMzIgNC44IDQuOCAwIDAgMSAwLTkuNiA0LjYgNC42IDAgMCAxIDMuMjcgMS4yOWwxLjI3LTEuMjdhNi4yOSA2LjI5IDAgMCAwIC00LjUzLTEuODcgNi42MSA2LjYxIDAgMSAwIDAgMTMuMjEgNiA2IDAgMCAwIDQuNjEtMS44NSA2IDYgMCAwIDAgMS41Ni00LjIyIDUuODcgNS44NyAwIDAgMCAtLjEtMS4xM3ptNDUuMzEgMS40YTQgNCAwIDAgMCAtMy42NC0yLjcxIDQgNCAwIDAgMCAtNCA0LjI1IDQuMTYgNC4xNiAwIDAgMCA0LjIyIDQuMjUgNC4yMyA0LjIzIDAgMCAwIDMuNTQtMS44OGwtMS40NS0xYTIuNDMgMi40MyAwIDAgMSAtMi4wOSAxLjE4IDIuMTYgMi4xNiAwIDAgMSAtMi4wNi0xLjI5bDUuNjktMi4zNXptLTUuOCAxLjQyYTIuMzMgMi4zMyAwIDAgMSAyLjIyLTIuNDggMS42NSAxLjY1IDAgMCAxIDEuNTguOXptLTQuNjIgNC4xMmgxLjg3di0xMi41aC0xLjg3em0tMy4wNi03LjNoLS4wN2EzIDMgMCAwIDAgLTIuMjQtMSA0LjI2IDQuMjYgMCAwIDAgMCA4LjUxIDIuOSAyLjkgMCAwIDAgMi4yNC0xaC4wNnYuNjFjMCAxLjYzLS44NyAyLjUtMi4yNyAyLjVhMi4zNSAyLjM1IDAgMCAxIC0yLjE0LTEuNTFsLTEuNjMuNjhhNC4wNSA0LjA1IDAgMCAwIDMuNzcgMi41MWMyLjE5IDAgNC0xLjI5IDQtNC40M3YtNy41N2gtMS43MnptLTIuMTQgNS44OGEyLjU5IDIuNTkgMCAwIDEgMC01LjE2IDIuNCAyLjQgMCAwIDEgMi4yNyAyLjU4IDIuMzggMi4zOCAwIDAgMSAtMi4yOCAyLjU4em0yNC4zOC0xMS4wOGgtNC40N3YxMi41aDEuODd2LTQuNzRoMi42MWEzLjg5IDMuODkgMCAxIDAgMC03Ljc2em0wIDZoLTIuNjF2LTQuMjZoMi42NWEyLjE0NSAyLjE0NSAwIDEgMSAwIDQuMjl6bTExLjUzLTEuOGEzLjUgMy41IDAgMCAwIC0zLjMzIDEuOTFsMS42Ni42OWExLjc3IDEuNzcgMCAwIDEgMS43LS45MiAxLjggMS44IDAgMCAxIDIgMS42MXYuMTNhNC4xMyA0LjEzIDAgMCAwIC0xLjk1LS40OGMtMS43OSAwLTMuNiAxLTMuNiAyLjgxYTIuODkgMi44OSAwIDAgMCAzLjEgMi43NSAyLjYzIDIuNjMgMCAwIDAgMi40LTEuMmguMDZ2MWgxLjh2LTQuODFjMC0yLjE5LTEuNjYtMy40Ni0zLjc5LTMuNDZ6bS0uMjMgNi44NWMtLjYxIDAtMS40Ni0uMzEtMS40Ni0xLjA2IDAtMSAxLjA2LTEuMzMgMi0xLjMzYTMuMzIgMy4zMiAwIDAgMSAxLjcuNDIgMi4yNiAyLjI2IDAgMCAxIC0yLjE5IDJ6bTEwLjYzLTYuNTUtMi4xNCA1LjQyaC0uMDZsLTIuMjItNS40MmgtMmwzLjMzIDcuNTgtMS45IDQuMjFoMS45NWw1LjEyLTExLjc5em0tMTYuODEgOGgxLjg3di0xMi41aC0xLjg3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Im0yMC40NCAxNy41NGEyIDIgMCAwIDAgLS40NiAxLjR2MjIuMTJhMiAyIDAgMCAwIC40NiAxLjRsLjA3LjA3IDEyLjM5LTEyLjM4di0uMjlsLTEyLjM5LTEyLjM5eiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Im0zNyAzNC4yOC00LjEtNC4xM3YtLjI5bDQuMS00LjE0LjA5LjA1IDQuOTEgMi43OWMxLjQuNzkgMS40IDIuMDkgMCAyLjg5bC00Ljg5IDIuNzh6IiBmaWxsPSJ1cmwoI2IpIi8+PHBhdGggZD0ibTM3LjEyIDM0LjIyLTQuMjItNC4yMi0xMi40NiAxMi40NmExLjYzIDEuNjMgMCAwIDAgMi4wOC4wNmwxNC42MS04LjMiIGZpbGw9InVybCgjYykiLz48cGF0aCBkPSJtMzcuMTIgMjUuNzgtMTQuNjEtOC4zYTEuNjMgMS42MyAwIDAgMCAtMi4wOC4wNmwxMi40NyAxMi40NnoiIGZpbGw9InVybCgjZCkiLz48cGF0aCBkPSJtMzcgMzQuMTMtMTQuNDkgOC4yNWExLjY3IDEuNjcgMCAwIDEgLTIgMGwtLjA3LjA3LjA3LjA3YTEuNjYgMS42NiAwIDAgMCAyIDBsMTQuNjEtOC4zeiIgb3BhY2l0eT0iLjIiLz48cGF0aCBkPSJtMjAuNDQgNDIuMzJhMiAyIDAgMCAxIC0uNDYtMS40di4xNWEyIDIgMCAwIDAgLjQ2IDEuNGwuMDctLjA3em0yMS41Ni0xMS4wMi01IDIuODMuMDkuMDkgNC45MS0yLjc4YTEuNzUgMS43NSAwIDAgMCAxLTEuNDQgMS44NiAxLjg2IDAgMCAxIC0xIDEuM3oiIG9wYWNpdHk9Ii4xMiIvPjxwYXRoIGQ9Im0yMi41MSAxNy42MiAxOS40OSAxMS4wOGExLjg2IDEuODYgMCAwIDEgMSAxLjMgMS43NSAxLjc1IDAgMCAwIC0xLTEuNDRsLTE5LjQ5LTExLjA4Yy0xLjQtLjc5LTIuNTQtLjEzLTIuNTQgMS40N3YuMTVjLjAzLTEuNjEgMS4xNS0yLjI3IDIuNTQtMS40OHoiIGZpbGw9IiNmZmYiIG9wYWNpdHk9Ii4yNSIvPjwvZz48L3N2Zz4=\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }, reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n}));\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function() {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","import \"ie11-custom-properties\";\nimport \"./classList.js\";\nimport \"element-remove\";\nimport \"./endsWith\";\nimport \"./startsWith\";\nimport \"./CustomEvent\";\nimport \"./objectAssign\";\nimport \"./closest\";\nimport \"./elementAppend\";\nimport \"./objectKeys\";\nimport \"./arrayKeys\";\nimport \"./arrayFrom\";\nimport \"eventlistener-polyfill\";\n\nexport class InternetExplorerPolyfills {\n\n}","import { WebPlugin } from '@capacitor/core';\nexport class FacebookLoginWeb extends WebPlugin {\n async initialize(options) {\n const defaultOptions = { version: 'v17.0' };\n await this.loadScript(options.locale);\n return FB.init(Object.assign(Object.assign({}, defaultOptions), options));\n }\n loadScript(locale) {\n if (typeof document === 'undefined') {\n return Promise.reject('document global not found');\n }\n const scriptId = 'fb';\n const scriptEl = document.getElementById(scriptId);\n if (scriptEl) {\n // already loaded\n return Promise.resolve();\n }\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n return new Promise(resolve => {\n script.onload = () => resolve();\n script.defer = true;\n script.async = true;\n script.id = scriptId;\n script.src = `https://connect.facebook.net/${locale !== null && locale !== void 0 ? locale : 'en_US'}/sdk.js`;\n head.appendChild(script);\n });\n }\n async login(options) {\n return new Promise((resolve, reject) => {\n FB.login(response => {\n if (response.status === 'connected') {\n resolve({\n accessToken: {\n token: response.authResponse.accessToken,\n },\n });\n }\n else {\n reject({\n accessToken: {\n token: null,\n },\n });\n }\n }, { scope: options.permissions.join(',') });\n });\n }\n async logout() {\n return new Promise(resolve => FB.logout(() => resolve()));\n }\n async reauthorize() {\n return new Promise(resolve => FB.reauthorize(it => resolve(it)));\n }\n async getCurrentAccessToken() {\n return new Promise((resolve, reject) => {\n FB.getLoginStatus(response => {\n if (response.status === 'connected') {\n const result = {\n accessToken: {\n applicationId: undefined,\n declinedPermissions: [],\n expires: undefined,\n isExpired: undefined,\n lastRefresh: undefined,\n permissions: [],\n token: response.authResponse.accessToken,\n userId: response.authResponse.userID,\n },\n };\n resolve(result);\n }\n else {\n reject({\n accessToken: {\n token: null,\n },\n });\n }\n });\n });\n }\n async getProfile(options) {\n const fields = options.fields.join(',');\n return new Promise((resolve, reject) => {\n FB.api('/me', { fields }, response => {\n if (response.error) {\n reject(response.error.message);\n return;\n }\n resolve(response);\n });\n });\n }\n async logEvent() {\n return Promise.resolve();\n }\n async setAutoLogAppEventsEnabled() {\n return Promise.resolve();\n }\n async setAdvertiserTrackingEnabled() {\n return Promise.resolve();\n }\n async setAdvertiserIDCollectionEnabled() {\n return Promise.resolve();\n }\n}\n//# sourceMappingURL=web.js.map","import { WebPlugin } from '@capacitor/core';\nexport class GoogleAuthWeb extends WebPlugin {\n constructor() {\n super();\n }\n loadScript() {\n if (typeof document === 'undefined') {\n return;\n }\n const scriptId = 'gapi';\n const scriptEl = document === null || document === void 0 ? void 0 : document.getElementById(scriptId);\n if (scriptEl) {\n return;\n }\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.defer = true;\n script.async = true;\n script.id = scriptId;\n script.onload = this.platformJsLoaded.bind(this);\n script.src = 'https://apis.google.com/js/platform.js';\n head.appendChild(script);\n }\n initialize(_options = {\n clientId: '',\n scopes: [],\n grantOfflineAccess: false,\n }) {\n var _a, _b;\n if (typeof window === 'undefined') {\n return;\n }\n const metaClientId = (_a = document.getElementsByName('google-signin-client_id')[0]) === null || _a === void 0 ? void 0 : _a.content;\n const clientId = _options.clientId || metaClientId || '';\n if (!clientId) {\n console.warn('GoogleAuthPlugin - clientId is empty');\n }\n this.options = {\n clientId,\n grantOfflineAccess: (_b = _options.grantOfflineAccess) !== null && _b !== void 0 ? _b : false,\n scopes: _options.scopes || [],\n };\n this.gapiLoaded = new Promise((resolve) => {\n // HACK: Relying on window object, can't get property in gapi.load callback\n window.gapiResolve = resolve;\n this.loadScript();\n });\n this.addUserChangeListener();\n }\n platformJsLoaded() {\n gapi.load('auth2', () => {\n // https://github.com/CodetrixStudio/CapacitorGoogleAuth/issues/202#issuecomment-1147393785\n const clientConfig = {\n client_id: this.options.clientId,\n plugin_name: 'CodetrixStudioCapacitorGoogleAuth',\n };\n if (this.options.scopes.length) {\n clientConfig.scope = this.options.scopes.join(' ');\n }\n gapi.auth2.init(clientConfig);\n window.gapiResolve();\n });\n }\n async signIn() {\n return new Promise(async (resolve, reject) => {\n var _a;\n try {\n let serverAuthCode;\n const needsOfflineAccess = (_a = this.options.grantOfflineAccess) !== null && _a !== void 0 ? _a : false;\n if (needsOfflineAccess) {\n const offlineAccessResponse = await gapi.auth2.getAuthInstance().grantOfflineAccess();\n serverAuthCode = offlineAccessResponse.code;\n }\n else {\n await gapi.auth2.getAuthInstance().signIn();\n }\n const googleUser = gapi.auth2.getAuthInstance().currentUser.get();\n if (needsOfflineAccess) {\n // HACK: AuthResponse is null if we don't do this when using grantOfflineAccess\n await googleUser.reloadAuthResponse();\n }\n const user = this.getUserFrom(googleUser);\n user.serverAuthCode = serverAuthCode;\n resolve(user);\n }\n catch (error) {\n reject(error);\n }\n });\n }\n async refresh() {\n const authResponse = await gapi.auth2.getAuthInstance().currentUser.get().reloadAuthResponse();\n return {\n accessToken: authResponse.access_token,\n idToken: authResponse.id_token,\n refreshToken: '',\n };\n }\n async signOut() {\n return gapi.auth2.getAuthInstance().signOut();\n }\n async addUserChangeListener() {\n await this.gapiLoaded;\n gapi.auth2.getAuthInstance().currentUser.listen((googleUser) => {\n this.notifyListeners('userChange', googleUser.isSignedIn() ? this.getUserFrom(googleUser) : null);\n });\n }\n getUserFrom(googleUser) {\n const user = {};\n const profile = googleUser.getBasicProfile();\n user.email = profile.getEmail();\n user.familyName = profile.getFamilyName();\n user.givenName = profile.getGivenName();\n user.id = profile.getId();\n user.imageUrl = profile.getImageUrl();\n user.name = profile.getName();\n const authResponse = googleUser.getAuthResponse(true);\n user.authentication = {\n accessToken: authResponse.access_token,\n idToken: authResponse.id_token,\n refreshToken: '',\n };\n return user;\n }\n}\n//# sourceMappingURL=web.js.map","import { WebPlugin } from \"@capacitor/core\";\nexport class InAppBrowserWeb extends WebPlugin {\n async open(options) {\n console.log(\"open\", options);\n return options;\n }\n async clearCookies() {\n console.log(\"cleanCookies\");\n return;\n }\n async openWebView(options) {\n console.log(\"openWebView\", options);\n return options;\n }\n async close() {\n console.log(\"close\");\n return;\n }\n async setUrl(options) {\n console.log(\"setUrl\", options.url);\n return;\n }\n}\n//# sourceMappingURL=web.js.map","import { WebPlugin } from '@capacitor/core';\nexport class AppWeb extends WebPlugin {\n constructor() {\n super();\n this.handleVisibilityChange = () => {\n const data = {\n isActive: document.hidden !== true,\n };\n this.notifyListeners('appStateChange', data);\n if (document.hidden) {\n this.notifyListeners('pause', null);\n }\n else {\n this.notifyListeners('resume', null);\n }\n };\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false);\n }\n exitApp() {\n throw this.unimplemented('Not implemented on web.');\n }\n async getInfo() {\n throw this.unimplemented('Not implemented on web.');\n }\n async getLaunchUrl() {\n return { url: '' };\n }\n async getState() {\n return { isActive: document.hidden !== true };\n }\n async minimizeApp() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\n//# sourceMappingURL=web.js.map","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar isString = function isString(val) {\n return typeof val === 'string';\n};\n\nvar isBlob = function isBlob(val) {\n return val instanceof Blob;\n};\n\npolyfill.call((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' ? window : undefined || {});\n\nfunction polyfill() {\n if (!('navigator' in this)) {\n this.navigator = {};\n }\n\n if (typeof this.navigator.sendBeacon !== 'function') {\n this.navigator.sendBeacon = sendBeacon.bind(this);\n }\n}\n\nfunction sendBeacon(url, data) {\n var event = this.event && this.event.type;\n var sync = event === 'unload' || event === 'beforeunload';\n var xhr = 'XMLHttpRequest' in this ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');\n xhr.open('POST', url, !sync);\n xhr.withCredentials = true;\n xhr.setRequestHeader('Accept', '*/*');\n\n if (isString(data)) {\n xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');\n xhr.responseType = 'text';\n } else if (isBlob(data) && data.type) {\n xhr.setRequestHeader('Content-Type', data.type);\n }\n\n try {\n xhr.send(data);\n } catch (error) {\n return false;\n }\n\n return true;\n}\n","/*!\n * html2canvas 1.0.0-rc.5 \n * Copyright (c) 2019 Niklas von Hertzen \n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.html2canvas = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n 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\n function __awaiter(thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n 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 }\n\n var Bounds = /** @class */ (function () {\r\n function Bounds(x, y, w, h) {\r\n this.left = x;\r\n this.top = y;\r\n this.width = w;\r\n this.height = h;\r\n }\r\n Bounds.prototype.add = function (x, y, w, h) {\r\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\r\n };\r\n Bounds.fromClientRect = function (clientRect) {\r\n return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\r\n };\r\n return Bounds;\r\n }());\r\n var parseBounds = function (node) {\r\n return Bounds.fromClientRect(node.getBoundingClientRect());\r\n };\r\n var parseDocumentSize = function (document) {\r\n var body = document.body;\r\n var documentElement = document.documentElement;\r\n if (!body || !documentElement) {\r\n throw new Error(\"Unable to get document size\");\r\n }\r\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\r\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\r\n return new Bounds(0, 0, width, height);\r\n };\n\n /*\n * css-line-break 1.1.1 \n * Copyright (c) 2019 Niklas von Hertzen \n * Released under MIT License\n */\n var toCodePoints = function (str) {\r\n var codePoints = [];\r\n var i = 0;\r\n var length = str.length;\r\n while (i < length) {\r\n var value = str.charCodeAt(i++);\r\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n var extra = str.charCodeAt(i++);\r\n if ((extra & 0xfc00) === 0xdc00) {\r\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n }\r\n else {\r\n codePoints.push(value);\r\n i--;\r\n }\r\n }\r\n else {\r\n codePoints.push(value);\r\n }\r\n }\r\n return codePoints;\r\n };\r\n var fromCodePoint = function () {\r\n var codePoints = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n codePoints[_i] = arguments[_i];\r\n }\r\n if (String.fromCodePoint) {\r\n return String.fromCodePoint.apply(String, codePoints);\r\n }\r\n var length = codePoints.length;\r\n if (!length) {\r\n return '';\r\n }\r\n var codeUnits = [];\r\n var index = -1;\r\n var result = '';\r\n while (++index < length) {\r\n var codePoint = codePoints[index];\r\n if (codePoint <= 0xffff) {\r\n codeUnits.push(codePoint);\r\n }\r\n else {\r\n codePoint -= 0x10000;\r\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\r\n }\r\n if (index + 1 === length || codeUnits.length > 0x4000) {\r\n result += String.fromCharCode.apply(String, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n };\r\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n // Use a lookup table to find the index.\r\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\n for (var i = 0; i < chars.length; i++) {\r\n lookup[chars.charCodeAt(i)] = i;\r\n }\r\n var decode = function (base64) {\r\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\r\n if (base64[base64.length - 1] === '=') {\r\n bufferLength--;\r\n if (base64[base64.length - 2] === '=') {\r\n bufferLength--;\r\n }\r\n }\r\n var buffer = typeof ArrayBuffer !== 'undefined' &&\r\n typeof Uint8Array !== 'undefined' &&\r\n typeof Uint8Array.prototype.slice !== 'undefined'\r\n ? new ArrayBuffer(bufferLength)\r\n : new Array(bufferLength);\r\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n for (i = 0; i < len; i += 4) {\r\n encoded1 = lookup[base64.charCodeAt(i)];\r\n encoded2 = lookup[base64.charCodeAt(i + 1)];\r\n encoded3 = lookup[base64.charCodeAt(i + 2)];\r\n encoded4 = lookup[base64.charCodeAt(i + 3)];\r\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\r\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\r\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\r\n }\r\n return buffer;\r\n };\r\n var polyUint16Array = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 2) {\r\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\r\n }\r\n return bytes;\r\n };\r\n var polyUint32Array = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 4) {\r\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\r\n }\r\n return bytes;\r\n };\n\n /** Shift size for getting the index-2 table offset. */\r\n var UTRIE2_SHIFT_2 = 5;\r\n /** Shift size for getting the index-1 table offset. */\r\n var UTRIE2_SHIFT_1 = 6 + 5;\r\n /**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\r\n var UTRIE2_INDEX_SHIFT = 2;\r\n /**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\r\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\r\n /**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\r\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\r\n /** Number of entries in a data block. 32=0x20 */\r\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\r\n /** Mask for getting the lower bits for the in-data-block offset. */\r\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\r\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\r\n /** Count the lengths of both BMP pieces. 2080=0x820 */\r\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\r\n /**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\r\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\r\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n /**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\r\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\r\n /**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\r\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\r\n /** Number of entries in an index-2 block. 64=0x40 */\r\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\r\n /** Mask for getting the lower bits for the in-index-2-block offset. */\r\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\r\n var slice16 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var slice32 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var createTrieFromBase64 = function (base64) {\r\n var buffer = decode(base64);\r\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\r\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\r\n var headerLength = 24;\r\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\r\n var data = view32[5] === 2\r\n ? slice16(view16, (headerLength + view32[4]) / 2)\r\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\r\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\r\n };\r\n var Trie = /** @class */ (function () {\r\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\r\n this.initialValue = initialValue;\r\n this.errorValue = errorValue;\r\n this.highStart = highStart;\r\n this.highValueIndex = highValueIndex;\r\n this.index = index;\r\n this.data = data;\r\n }\r\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\r\n Trie.prototype.get = function (codePoint) {\r\n var ix;\r\n if (codePoint >= 0) {\r\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\r\n // Ordinary BMP code point, excluding leading surrogates.\r\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\r\n // 16 bit data is stored in the index array itself.\r\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0xffff) {\r\n // Lead Surrogate Code Point. A Separate index section is stored for\r\n // lead surrogate code units and code points.\r\n // The main index has the code unit data.\r\n // For this function, we need the code point data.\r\n // Note: this expression could be refactored for slightly improved efficiency, but\r\n // surrogate code points will be so rare in practice that it's not worth it.\r\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint < this.highStart) {\r\n // Supplemental code point, use two-level lookup.\r\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\r\n ix = this.index[ix];\r\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\r\n ix = this.index[ix];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0x10ffff) {\r\n return this.data[this.highValueIndex];\r\n }\r\n }\r\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\r\n return this.errorValue;\r\n };\r\n return Trie;\r\n }());\n\n var base64 = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\n\n /* @flow */\r\n var LETTER_NUMBER_MODIFIER = 50;\r\n // Non-tailorable Line Breaking Classes\r\n var BK = 1; // Cause a line break (after)\r\n var CR = 2; // Cause a line break (after), except between CR and LF\r\n var LF = 3; // Cause a line break (after)\r\n var CM = 4; // Prohibit a line break between the character and the preceding character\r\n var NL = 5; // Cause a line break (after)\r\n var WJ = 7; // Prohibit line breaks before and after\r\n var ZW = 8; // Provide a break opportunity\r\n var GL = 9; // Prohibit line breaks before and after\r\n var SP = 10; // Enable indirect line breaks\r\n var ZWJ = 11; // Prohibit line breaks within joiner sequences\r\n // Break Opportunities\r\n var B2 = 12; // Provide a line break opportunity before and after the character\r\n var BA = 13; // Generally provide a line break opportunity after the character\r\n var BB = 14; // Generally provide a line break opportunity before the character\r\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\r\n var CB = 16; // Provide a line break opportunity contingent on additional information\r\n // Characters Prohibiting Certain Breaks\r\n var CL = 17; // Prohibit line breaks before\r\n var CP = 18; // Prohibit line breaks before\r\n var EX = 19; // Prohibit line breaks before\r\n var IN = 20; // Allow only indirect line breaks between pairs\r\n var NS = 21; // Allow only indirect line breaks before\r\n var OP = 22; // Prohibit line breaks after\r\n var QU = 23; // Act like they are both opening and closing\r\n // Numeric Context\r\n var IS = 24; // Prevent breaks after any and before numeric\r\n var NU = 25; // Form numeric expressions for line breaking purposes\r\n var PO = 26; // Do not break following a numeric expression\r\n var PR = 27; // Do not break in front of a numeric expression\r\n var SY = 28; // Prevent a break before; and allow a break after\r\n // Other Characters\r\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\r\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\r\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\r\n var EB = 32; // Do not break from following Emoji Modifier\r\n var EM = 33; // Do not break from preceding Emoji Base\r\n var H2 = 34; // Form Korean syllable blocks\r\n var H3 = 35; // Form Korean syllable blocks\r\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\r\n var ID = 37; // Break before or after; except in some numeric context\r\n var JL = 38; // Form Korean syllable blocks\r\n var JV = 39; // Form Korean syllable blocks\r\n var JT = 40; // Form Korean syllable blocks\r\n var RI = 41; // Keep pairs together. For pairs; break before and after other classes\r\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\r\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\r\n var BREAK_MANDATORY = '!';\r\n var BREAK_NOT_ALLOWED = '×';\r\n var BREAK_ALLOWED = '÷';\r\n var UnicodeTrie = createTrieFromBase64(base64);\r\n var ALPHABETICS = [AL, HL];\r\n var HARD_LINE_BREAKS = [BK, CR, LF, NL];\r\n var SPACE = [SP, ZW];\r\n var PREFIX_POSTFIX = [PR, PO];\r\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\r\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\r\n var HYPHEN = [HY, BA];\r\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\r\n if (lineBreak === void 0) { lineBreak = 'strict'; }\r\n var types = [];\r\n var indicies = [];\r\n var categories = [];\r\n codePoints.forEach(function (codePoint, index) {\r\n var classType = UnicodeTrie.get(codePoint);\r\n if (classType > LETTER_NUMBER_MODIFIER) {\r\n categories.push(true);\r\n classType -= LETTER_NUMBER_MODIFIER;\r\n }\r\n else {\r\n categories.push(false);\r\n }\r\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\r\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\r\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\r\n indicies.push(index);\r\n return types.push(CB);\r\n }\r\n }\r\n if (classType === CM || classType === ZWJ) {\r\n // LB10 Treat any remaining combining mark or ZWJ as AL.\r\n if (index === 0) {\r\n indicies.push(index);\r\n return types.push(AL);\r\n }\r\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\r\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\r\n var prev = types[index - 1];\r\n if (LINE_BREAKS.indexOf(prev) === -1) {\r\n indicies.push(indicies[index - 1]);\r\n return types.push(prev);\r\n }\r\n indicies.push(index);\r\n return types.push(AL);\r\n }\r\n indicies.push(index);\r\n if (classType === CJ) {\r\n return types.push(lineBreak === 'strict' ? NS : ID);\r\n }\r\n if (classType === SA) {\r\n return types.push(AL);\r\n }\r\n if (classType === AI) {\r\n return types.push(AL);\r\n }\r\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\r\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\r\n // to take into account the actual line breaking properties for these characters.\r\n if (classType === XX) {\r\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\r\n return types.push(ID);\r\n }\r\n else {\r\n return types.push(AL);\r\n }\r\n }\r\n types.push(classType);\r\n });\r\n return [indicies, types, categories];\r\n };\r\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\r\n var current = classTypes[currentIndex];\r\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\r\n var i = currentIndex;\r\n while (i <= classTypes.length) {\r\n i++;\r\n var next = classTypes[i];\r\n if (next === b) {\r\n return true;\r\n }\r\n if (next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n if (current === SP) {\r\n var i = currentIndex;\r\n while (i > 0) {\r\n i--;\r\n var prev = classTypes[i];\r\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\r\n var n = currentIndex;\r\n while (n <= classTypes.length) {\r\n n++;\r\n var next = classTypes[n];\r\n if (next === b) {\r\n return true;\r\n }\r\n if (next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n if (prev !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\r\n var i = currentIndex;\r\n while (i >= 0) {\r\n var type = classTypes[i];\r\n if (type === SP) {\r\n i--;\r\n }\r\n else {\r\n return type;\r\n }\r\n }\r\n return 0;\r\n };\r\n var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\r\n if (indicies[index] === 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n var currentIndex = index - 1;\r\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n var beforeIndex = currentIndex - 1;\r\n var afterIndex = currentIndex + 1;\r\n var current = classTypes[currentIndex];\r\n // LB4 Always break after hard line breaks.\r\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\r\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\r\n var next = classTypes[afterIndex];\r\n if (current === CR && next === LF) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\r\n return BREAK_MANDATORY;\r\n }\r\n // LB6 Do not break before hard line breaks.\r\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB7 Do not break before spaces or zero width space.\r\n if (SPACE.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\r\n return BREAK_ALLOWED;\r\n }\r\n // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\r\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB11 Do not break before or after Word joiner and related characters.\r\n if (current === WJ || next === WJ) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB12 Do not break after NBSP and related characters.\r\n if (current === GL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\r\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\r\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB14 Do not break after ‘[’, even after spaces.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB15 Do not break within ‘”[’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB17 Do not break within ‘——’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB18 Break after spaces.\r\n if (current === SP) {\r\n return BREAK_ALLOWED;\r\n }\r\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\r\n if (current === QU || next === QU) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB20 Break before and after unresolved CB.\r\n if (next === CB || current === CB) {\r\n return BREAK_ALLOWED;\r\n }\r\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\r\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB21a Don't break after Hebrew + Hyphen.\r\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB21b Don’t break between Solidus and Hebrew letters.\r\n if (current === SY && next === HL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\r\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB23 Do not break between digits and letters.\r\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\r\n if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\r\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\r\n if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\r\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB25 Do not break between the following pairs of classes relevant to numbers:\r\n if (\r\n // (PR | PO) × ( OP | HY )? NU\r\n ([PR, PO].indexOf(current) !== -1 &&\r\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\r\n // ( OP | HY ) × NU\r\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\r\n // NU ×\t(NU | SY | IS)\r\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\r\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\r\n var prevIndex = currentIndex;\r\n while (prevIndex >= 0) {\r\n var type = classTypes[prevIndex];\r\n if (type === NU) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n else if ([SY, IS].indexOf(type) !== -1) {\r\n prevIndex--;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\r\n if ([PR, PO].indexOf(next) !== -1) {\r\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\r\n while (prevIndex >= 0) {\r\n var type = classTypes[prevIndex];\r\n if (type === NU) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n else if ([SY, IS].indexOf(type) !== -1) {\r\n prevIndex--;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n // LB26 Do not break a Korean syllable.\r\n if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\r\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\r\n ([JT, H3].indexOf(current) !== -1 && next === JT)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB27 Treat a Korean Syllable Block the same as ID.\r\n if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\r\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB28 Do not break between alphabetics (“at”).\r\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\r\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\r\n if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP) ||\r\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\r\n // indicators preceding the position of the break.\r\n if (current === RI && next === RI) {\r\n var i = indicies[currentIndex];\r\n var count = 1;\r\n while (i > 0) {\r\n i--;\r\n if (classTypes[i] === RI) {\r\n count++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (count % 2 !== 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n }\r\n // LB30b Do not break between an emoji base and an emoji modifier.\r\n if (current === EB && next === EM) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n return BREAK_ALLOWED;\r\n };\r\n var cssFormattedClasses = function (codePoints, options) {\r\n if (!options) {\r\n options = { lineBreak: 'normal', wordBreak: 'normal' };\r\n }\r\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\r\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\r\n classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\r\n }\r\n var forbiddenBreakpoints = options.wordBreak === 'keep-all'\r\n ? isLetterNumber.map(function (letterNumber, i) {\r\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\r\n })\r\n : undefined;\r\n return [indicies, classTypes, forbiddenBreakpoints];\r\n };\r\n var Break = /** @class */ (function () {\r\n function Break(codePoints, lineBreak, start, end) {\r\n this.codePoints = codePoints;\r\n this.required = lineBreak === BREAK_MANDATORY;\r\n this.start = start;\r\n this.end = end;\r\n }\r\n Break.prototype.slice = function () {\r\n return fromCodePoint.apply(void 0, this.codePoints.slice(this.start, this.end));\r\n };\r\n return Break;\r\n }());\r\n var LineBreaker = function (str, options) {\r\n var codePoints = toCodePoints(str);\r\n var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\r\n var length = codePoints.length;\r\n var lastEnd = 0;\r\n var nextIndex = 0;\r\n return {\r\n next: function () {\r\n if (nextIndex >= length) {\r\n return { done: true, value: null };\r\n }\r\n var lineBreak = BREAK_NOT_ALLOWED;\r\n while (nextIndex < length &&\r\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\r\n BREAK_NOT_ALLOWED) { }\r\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\r\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\r\n lastEnd = nextIndex;\r\n return { value: value, done: false };\r\n }\r\n return { done: true, value: null };\r\n },\r\n };\r\n };\n\n // https://www.w3.org/TR/css-syntax-3\r\n var TokenType;\r\n (function (TokenType) {\r\n TokenType[TokenType[\"STRING_TOKEN\"] = 0] = \"STRING_TOKEN\";\r\n TokenType[TokenType[\"BAD_STRING_TOKEN\"] = 1] = \"BAD_STRING_TOKEN\";\r\n TokenType[TokenType[\"LEFT_PARENTHESIS_TOKEN\"] = 2] = \"LEFT_PARENTHESIS_TOKEN\";\r\n TokenType[TokenType[\"RIGHT_PARENTHESIS_TOKEN\"] = 3] = \"RIGHT_PARENTHESIS_TOKEN\";\r\n TokenType[TokenType[\"COMMA_TOKEN\"] = 4] = \"COMMA_TOKEN\";\r\n TokenType[TokenType[\"HASH_TOKEN\"] = 5] = \"HASH_TOKEN\";\r\n TokenType[TokenType[\"DELIM_TOKEN\"] = 6] = \"DELIM_TOKEN\";\r\n TokenType[TokenType[\"AT_KEYWORD_TOKEN\"] = 7] = \"AT_KEYWORD_TOKEN\";\r\n TokenType[TokenType[\"PREFIX_MATCH_TOKEN\"] = 8] = \"PREFIX_MATCH_TOKEN\";\r\n TokenType[TokenType[\"DASH_MATCH_TOKEN\"] = 9] = \"DASH_MATCH_TOKEN\";\r\n TokenType[TokenType[\"INCLUDE_MATCH_TOKEN\"] = 10] = \"INCLUDE_MATCH_TOKEN\";\r\n TokenType[TokenType[\"LEFT_CURLY_BRACKET_TOKEN\"] = 11] = \"LEFT_CURLY_BRACKET_TOKEN\";\r\n TokenType[TokenType[\"RIGHT_CURLY_BRACKET_TOKEN\"] = 12] = \"RIGHT_CURLY_BRACKET_TOKEN\";\r\n TokenType[TokenType[\"SUFFIX_MATCH_TOKEN\"] = 13] = \"SUFFIX_MATCH_TOKEN\";\r\n TokenType[TokenType[\"SUBSTRING_MATCH_TOKEN\"] = 14] = \"SUBSTRING_MATCH_TOKEN\";\r\n TokenType[TokenType[\"DIMENSION_TOKEN\"] = 15] = \"DIMENSION_TOKEN\";\r\n TokenType[TokenType[\"PERCENTAGE_TOKEN\"] = 16] = \"PERCENTAGE_TOKEN\";\r\n TokenType[TokenType[\"NUMBER_TOKEN\"] = 17] = \"NUMBER_TOKEN\";\r\n TokenType[TokenType[\"FUNCTION\"] = 18] = \"FUNCTION\";\r\n TokenType[TokenType[\"FUNCTION_TOKEN\"] = 19] = \"FUNCTION_TOKEN\";\r\n TokenType[TokenType[\"IDENT_TOKEN\"] = 20] = \"IDENT_TOKEN\";\r\n TokenType[TokenType[\"COLUMN_TOKEN\"] = 21] = \"COLUMN_TOKEN\";\r\n TokenType[TokenType[\"URL_TOKEN\"] = 22] = \"URL_TOKEN\";\r\n TokenType[TokenType[\"BAD_URL_TOKEN\"] = 23] = \"BAD_URL_TOKEN\";\r\n TokenType[TokenType[\"CDC_TOKEN\"] = 24] = \"CDC_TOKEN\";\r\n TokenType[TokenType[\"CDO_TOKEN\"] = 25] = \"CDO_TOKEN\";\r\n TokenType[TokenType[\"COLON_TOKEN\"] = 26] = \"COLON_TOKEN\";\r\n TokenType[TokenType[\"SEMICOLON_TOKEN\"] = 27] = \"SEMICOLON_TOKEN\";\r\n TokenType[TokenType[\"LEFT_SQUARE_BRACKET_TOKEN\"] = 28] = \"LEFT_SQUARE_BRACKET_TOKEN\";\r\n TokenType[TokenType[\"RIGHT_SQUARE_BRACKET_TOKEN\"] = 29] = \"RIGHT_SQUARE_BRACKET_TOKEN\";\r\n TokenType[TokenType[\"UNICODE_RANGE_TOKEN\"] = 30] = \"UNICODE_RANGE_TOKEN\";\r\n TokenType[TokenType[\"WHITESPACE_TOKEN\"] = 31] = \"WHITESPACE_TOKEN\";\r\n TokenType[TokenType[\"EOF_TOKEN\"] = 32] = \"EOF_TOKEN\";\r\n })(TokenType || (TokenType = {}));\r\n var FLAG_UNRESTRICTED = 1 << 0;\r\n var FLAG_ID = 1 << 1;\r\n var FLAG_INTEGER = 1 << 2;\r\n var FLAG_NUMBER = 1 << 3;\r\n var LINE_FEED = 0x000a;\r\n var SOLIDUS = 0x002f;\r\n var REVERSE_SOLIDUS = 0x005c;\r\n var CHARACTER_TABULATION = 0x0009;\r\n var SPACE$1 = 0x0020;\r\n var QUOTATION_MARK = 0x0022;\r\n var EQUALS_SIGN = 0x003d;\r\n var NUMBER_SIGN = 0x0023;\r\n var DOLLAR_SIGN = 0x0024;\r\n var PERCENTAGE_SIGN = 0x0025;\r\n var APOSTROPHE = 0x0027;\r\n var LEFT_PARENTHESIS = 0x0028;\r\n var RIGHT_PARENTHESIS = 0x0029;\r\n var LOW_LINE = 0x005f;\r\n var HYPHEN_MINUS = 0x002d;\r\n var EXCLAMATION_MARK = 0x0021;\r\n var LESS_THAN_SIGN = 0x003c;\r\n var GREATER_THAN_SIGN = 0x003e;\r\n var COMMERCIAL_AT = 0x0040;\r\n var LEFT_SQUARE_BRACKET = 0x005b;\r\n var RIGHT_SQUARE_BRACKET = 0x005d;\r\n var CIRCUMFLEX_ACCENT = 0x003d;\r\n var LEFT_CURLY_BRACKET = 0x007b;\r\n var QUESTION_MARK = 0x003f;\r\n var RIGHT_CURLY_BRACKET = 0x007d;\r\n var VERTICAL_LINE = 0x007c;\r\n var TILDE = 0x007e;\r\n var CONTROL = 0x0080;\r\n var REPLACEMENT_CHARACTER = 0xfffd;\r\n var ASTERISK = 0x002a;\r\n var PLUS_SIGN = 0x002b;\r\n var COMMA = 0x002c;\r\n var COLON = 0x003a;\r\n var SEMICOLON = 0x003b;\r\n var FULL_STOP = 0x002e;\r\n var NULL = 0x0000;\r\n var BACKSPACE = 0x0008;\r\n var LINE_TABULATION = 0x000b;\r\n var SHIFT_OUT = 0x000e;\r\n var INFORMATION_SEPARATOR_ONE = 0x001f;\r\n var DELETE = 0x007f;\r\n var EOF = -1;\r\n var ZERO = 0x0030;\r\n var a = 0x0061;\r\n var e = 0x0065;\r\n var f = 0x0066;\r\n var u = 0x0075;\r\n var z = 0x007a;\r\n var A = 0x0041;\r\n var E = 0x0045;\r\n var F = 0x0046;\r\n var U = 0x0055;\r\n var Z = 0x005a;\r\n var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\r\n var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\r\n var isHex = function (codePoint) {\r\n return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\r\n };\r\n var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\r\n var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\r\n var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\r\n var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\r\n var isWhiteSpace = function (codePoint) {\r\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE$1;\r\n };\r\n var isNameStartCodePoint = function (codePoint) {\r\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\r\n };\r\n var isNameCodePoint = function (codePoint) {\r\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\r\n };\r\n var isNonPrintableCodePoint = function (codePoint) {\r\n return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\r\n codePoint === LINE_TABULATION ||\r\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\r\n codePoint === DELETE);\r\n };\r\n var isValidEscape = function (c1, c2) {\r\n if (c1 !== REVERSE_SOLIDUS) {\r\n return false;\r\n }\r\n return c2 !== LINE_FEED;\r\n };\r\n var isIdentifierStart = function (c1, c2, c3) {\r\n if (c1 === HYPHEN_MINUS) {\r\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\r\n }\r\n else if (isNameStartCodePoint(c1)) {\r\n return true;\r\n }\r\n else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n var isNumberStart = function (c1, c2, c3) {\r\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n if (isDigit(c2)) {\r\n return true;\r\n }\r\n return c2 === FULL_STOP && isDigit(c3);\r\n }\r\n if (c1 === FULL_STOP) {\r\n return isDigit(c2);\r\n }\r\n return isDigit(c1);\r\n };\r\n var stringToNumber = function (codePoints) {\r\n var c = 0;\r\n var sign = 1;\r\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n if (codePoints[c] === HYPHEN_MINUS) {\r\n sign = -1;\r\n }\r\n c++;\r\n }\r\n var integers = [];\r\n while (isDigit(codePoints[c])) {\r\n integers.push(codePoints[c++]);\r\n }\r\n var int = integers.length ? parseInt(fromCodePoint.apply(void 0, integers), 10) : 0;\r\n if (codePoints[c] === FULL_STOP) {\r\n c++;\r\n }\r\n var fraction = [];\r\n while (isDigit(codePoints[c])) {\r\n fraction.push(codePoints[c++]);\r\n }\r\n var fracd = fraction.length;\r\n var frac = fracd ? parseInt(fromCodePoint.apply(void 0, fraction), 10) : 0;\r\n if (codePoints[c] === E || codePoints[c] === e) {\r\n c++;\r\n }\r\n var expsign = 1;\r\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n if (codePoints[c] === HYPHEN_MINUS) {\r\n expsign = -1;\r\n }\r\n c++;\r\n }\r\n var exponent = [];\r\n while (isDigit(codePoints[c])) {\r\n exponent.push(codePoints[c++]);\r\n }\r\n var exp = exponent.length ? parseInt(fromCodePoint.apply(void 0, exponent), 10) : 0;\r\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\r\n };\r\n var LEFT_PARENTHESIS_TOKEN = {\r\n type: TokenType.LEFT_PARENTHESIS_TOKEN\r\n };\r\n var RIGHT_PARENTHESIS_TOKEN = {\r\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\r\n };\r\n var COMMA_TOKEN = { type: TokenType.COMMA_TOKEN };\r\n var SUFFIX_MATCH_TOKEN = { type: TokenType.SUFFIX_MATCH_TOKEN };\r\n var PREFIX_MATCH_TOKEN = { type: TokenType.PREFIX_MATCH_TOKEN };\r\n var COLUMN_TOKEN = { type: TokenType.COLUMN_TOKEN };\r\n var DASH_MATCH_TOKEN = { type: TokenType.DASH_MATCH_TOKEN };\r\n var INCLUDE_MATCH_TOKEN = { type: TokenType.INCLUDE_MATCH_TOKEN };\r\n var LEFT_CURLY_BRACKET_TOKEN = {\r\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\r\n };\r\n var RIGHT_CURLY_BRACKET_TOKEN = {\r\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\r\n };\r\n var SUBSTRING_MATCH_TOKEN = { type: TokenType.SUBSTRING_MATCH_TOKEN };\r\n var BAD_URL_TOKEN = { type: TokenType.BAD_URL_TOKEN };\r\n var BAD_STRING_TOKEN = { type: TokenType.BAD_STRING_TOKEN };\r\n var CDO_TOKEN = { type: TokenType.CDO_TOKEN };\r\n var CDC_TOKEN = { type: TokenType.CDC_TOKEN };\r\n var COLON_TOKEN = { type: TokenType.COLON_TOKEN };\r\n var SEMICOLON_TOKEN = { type: TokenType.SEMICOLON_TOKEN };\r\n var LEFT_SQUARE_BRACKET_TOKEN = {\r\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\r\n };\r\n var RIGHT_SQUARE_BRACKET_TOKEN = {\r\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\r\n };\r\n var WHITESPACE_TOKEN = { type: TokenType.WHITESPACE_TOKEN };\r\n var EOF_TOKEN = { type: TokenType.EOF_TOKEN };\r\n var Tokenizer = /** @class */ (function () {\r\n function Tokenizer() {\r\n this._value = [];\r\n }\r\n Tokenizer.prototype.write = function (chunk) {\r\n this._value = this._value.concat(toCodePoints(chunk));\r\n };\r\n Tokenizer.prototype.read = function () {\r\n var tokens = [];\r\n var token = this.consumeToken();\r\n while (token !== EOF_TOKEN) {\r\n tokens.push(token);\r\n token = this.consumeToken();\r\n }\r\n return tokens;\r\n };\r\n Tokenizer.prototype.consumeToken = function () {\r\n var codePoint = this.consumeCodePoint();\r\n switch (codePoint) {\r\n case QUOTATION_MARK:\r\n return this.consumeStringToken(QUOTATION_MARK);\r\n case NUMBER_SIGN:\r\n var c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\r\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\r\n var value = this.consumeName();\r\n return { type: TokenType.HASH_TOKEN, value: value, flags: flags };\r\n }\r\n break;\r\n case DOLLAR_SIGN:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return SUFFIX_MATCH_TOKEN;\r\n }\r\n break;\r\n case APOSTROPHE:\r\n return this.consumeStringToken(APOSTROPHE);\r\n case LEFT_PARENTHESIS:\r\n return LEFT_PARENTHESIS_TOKEN;\r\n case RIGHT_PARENTHESIS:\r\n return RIGHT_PARENTHESIS_TOKEN;\r\n case ASTERISK:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return SUBSTRING_MATCH_TOKEN;\r\n }\r\n break;\r\n case PLUS_SIGN:\r\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n break;\r\n case COMMA:\r\n return COMMA_TOKEN;\r\n case HYPHEN_MINUS:\r\n var e1 = codePoint;\r\n var e2 = this.peekCodePoint(0);\r\n var e3 = this.peekCodePoint(1);\r\n if (isNumberStart(e1, e2, e3)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n if (isIdentifierStart(e1, e2, e3)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\r\n this.consumeCodePoint();\r\n this.consumeCodePoint();\r\n return CDC_TOKEN;\r\n }\r\n break;\r\n case FULL_STOP:\r\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n break;\r\n case SOLIDUS:\r\n if (this.peekCodePoint(0) === ASTERISK) {\r\n this.consumeCodePoint();\r\n while (true) {\r\n var c = this.consumeCodePoint();\r\n if (c === ASTERISK) {\r\n c = this.consumeCodePoint();\r\n if (c === SOLIDUS) {\r\n return this.consumeToken();\r\n }\r\n }\r\n if (c === EOF) {\r\n return this.consumeToken();\r\n }\r\n }\r\n }\r\n break;\r\n case COLON:\r\n return COLON_TOKEN;\r\n case SEMICOLON:\r\n return SEMICOLON_TOKEN;\r\n case LESS_THAN_SIGN:\r\n if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\r\n this.peekCodePoint(1) === HYPHEN_MINUS &&\r\n this.peekCodePoint(2) === HYPHEN_MINUS) {\r\n this.consumeCodePoint();\r\n this.consumeCodePoint();\r\n return CDO_TOKEN;\r\n }\r\n break;\r\n case COMMERCIAL_AT:\r\n var a1 = this.peekCodePoint(0);\r\n var a2 = this.peekCodePoint(1);\r\n var a3 = this.peekCodePoint(2);\r\n if (isIdentifierStart(a1, a2, a3)) {\r\n var value = this.consumeName();\r\n return { type: TokenType.AT_KEYWORD_TOKEN, value: value };\r\n }\r\n break;\r\n case LEFT_SQUARE_BRACKET:\r\n return LEFT_SQUARE_BRACKET_TOKEN;\r\n case REVERSE_SOLIDUS:\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n break;\r\n case RIGHT_SQUARE_BRACKET:\r\n return RIGHT_SQUARE_BRACKET_TOKEN;\r\n case CIRCUMFLEX_ACCENT:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return PREFIX_MATCH_TOKEN;\r\n }\r\n break;\r\n case LEFT_CURLY_BRACKET:\r\n return LEFT_CURLY_BRACKET_TOKEN;\r\n case RIGHT_CURLY_BRACKET:\r\n return RIGHT_CURLY_BRACKET_TOKEN;\r\n case u:\r\n case U:\r\n var u1 = this.peekCodePoint(0);\r\n var u2 = this.peekCodePoint(1);\r\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\r\n this.consumeCodePoint();\r\n this.consumeUnicodeRangeToken();\r\n }\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n case VERTICAL_LINE:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return DASH_MATCH_TOKEN;\r\n }\r\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\r\n this.consumeCodePoint();\r\n return COLUMN_TOKEN;\r\n }\r\n break;\r\n case TILDE:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return INCLUDE_MATCH_TOKEN;\r\n }\r\n break;\r\n case EOF:\r\n return EOF_TOKEN;\r\n }\r\n if (isWhiteSpace(codePoint)) {\r\n this.consumeWhiteSpace();\r\n return WHITESPACE_TOKEN;\r\n }\r\n if (isDigit(codePoint)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n if (isNameStartCodePoint(codePoint)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };\r\n };\r\n Tokenizer.prototype.consumeCodePoint = function () {\r\n var value = this._value.shift();\r\n return typeof value === 'undefined' ? -1 : value;\r\n };\r\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\r\n this._value.unshift(codePoint);\r\n };\r\n Tokenizer.prototype.peekCodePoint = function (delta) {\r\n if (delta >= this._value.length) {\r\n return -1;\r\n }\r\n return this._value[delta];\r\n };\r\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\r\n var digits = [];\r\n var codePoint = this.consumeCodePoint();\r\n while (isHex(codePoint) && digits.length < 6) {\r\n digits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n }\r\n var questionMarks = false;\r\n while (codePoint === QUESTION_MARK && digits.length < 6) {\r\n digits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n questionMarks = true;\r\n }\r\n if (questionMarks) {\r\n var start_1 = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\r\n var end = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\r\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start_1, end: end };\r\n }\r\n var start = parseInt(fromCodePoint.apply(void 0, digits), 16);\r\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\r\n this.consumeCodePoint();\r\n codePoint = this.consumeCodePoint();\r\n var endDigits = [];\r\n while (isHex(codePoint) && endDigits.length < 6) {\r\n endDigits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n }\r\n var end = parseInt(fromCodePoint.apply(void 0, endDigits), 16);\r\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: end };\r\n }\r\n else {\r\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: start };\r\n }\r\n };\r\n Tokenizer.prototype.consumeIdentLikeToken = function () {\r\n var value = this.consumeName();\r\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\r\n this.consumeCodePoint();\r\n return this.consumeUrlToken();\r\n }\r\n else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\r\n this.consumeCodePoint();\r\n return { type: TokenType.FUNCTION_TOKEN, value: value };\r\n }\r\n return { type: TokenType.IDENT_TOKEN, value: value };\r\n };\r\n Tokenizer.prototype.consumeUrlToken = function () {\r\n var value = [];\r\n this.consumeWhiteSpace();\r\n if (this.peekCodePoint(0) === EOF) {\r\n return { type: TokenType.URL_TOKEN, value: '' };\r\n }\r\n var next = this.peekCodePoint(0);\r\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\r\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\r\n if (stringToken.type === TokenType.STRING_TOKEN) {\r\n this.consumeWhiteSpace();\r\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\r\n this.consumeCodePoint();\r\n return { type: TokenType.URL_TOKEN, value: stringToken.value };\r\n }\r\n }\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\r\n return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };\r\n }\r\n else if (isWhiteSpace(codePoint)) {\r\n this.consumeWhiteSpace();\r\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\r\n this.consumeCodePoint();\r\n return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };\r\n }\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n else if (codePoint === QUOTATION_MARK ||\r\n codePoint === APOSTROPHE ||\r\n codePoint === LEFT_PARENTHESIS ||\r\n isNonPrintableCodePoint(codePoint)) {\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n else if (codePoint === REVERSE_SOLIDUS) {\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n value.push(this.consumeEscapedCodePoint());\r\n }\r\n else {\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n }\r\n else {\r\n value.push(codePoint);\r\n }\r\n }\r\n };\r\n Tokenizer.prototype.consumeWhiteSpace = function () {\r\n while (isWhiteSpace(this.peekCodePoint(0))) {\r\n this.consumeCodePoint();\r\n }\r\n };\r\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\r\n return;\r\n }\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n this.consumeEscapedCodePoint();\r\n }\r\n }\r\n };\r\n Tokenizer.prototype.consumeStringSlice = function (count) {\r\n var SLICE_STACK_SIZE = 60000;\r\n var value = '';\r\n while (count > 0) {\r\n var amount = Math.min(SLICE_STACK_SIZE, count);\r\n value += fromCodePoint.apply(void 0, this._value.splice(0, amount));\r\n count -= amount;\r\n }\r\n this._value.shift();\r\n return value;\r\n };\r\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\r\n var value = '';\r\n var i = 0;\r\n do {\r\n var codePoint = this._value[i];\r\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\r\n value += this.consumeStringSlice(i);\r\n return { type: TokenType.STRING_TOKEN, value: value };\r\n }\r\n if (codePoint === LINE_FEED) {\r\n this._value.splice(0, i);\r\n return BAD_STRING_TOKEN;\r\n }\r\n if (codePoint === REVERSE_SOLIDUS) {\r\n var next = this._value[i + 1];\r\n if (next !== EOF && next !== undefined) {\r\n if (next === LINE_FEED) {\r\n value += this.consumeStringSlice(i);\r\n i = -1;\r\n this._value.shift();\r\n }\r\n else if (isValidEscape(codePoint, next)) {\r\n value += this.consumeStringSlice(i);\r\n value += fromCodePoint(this.consumeEscapedCodePoint());\r\n i = -1;\r\n }\r\n }\r\n }\r\n i++;\r\n } while (true);\r\n };\r\n Tokenizer.prototype.consumeNumber = function () {\r\n var repr = [];\r\n var type = FLAG_INTEGER;\r\n var c1 = this.peekCodePoint(0);\r\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n if (c1 === FULL_STOP && isDigit(c2)) {\r\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n type = FLAG_NUMBER;\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n }\r\n c1 = this.peekCodePoint(0);\r\n c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\r\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n type = FLAG_NUMBER;\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n }\r\n return [stringToNumber(repr), type];\r\n };\r\n Tokenizer.prototype.consumeNumericToken = function () {\r\n var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\r\n var c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if (isIdentifierStart(c1, c2, c3)) {\r\n var unit = this.consumeName();\r\n return { type: TokenType.DIMENSION_TOKEN, number: number, flags: flags, unit: unit };\r\n }\r\n if (c1 === PERCENTAGE_SIGN) {\r\n this.consumeCodePoint();\r\n return { type: TokenType.PERCENTAGE_TOKEN, number: number, flags: flags };\r\n }\r\n return { type: TokenType.NUMBER_TOKEN, number: number, flags: flags };\r\n };\r\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\r\n var codePoint = this.consumeCodePoint();\r\n if (isHex(codePoint)) {\r\n var hex = fromCodePoint(codePoint);\r\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\r\n hex += fromCodePoint(this.consumeCodePoint());\r\n }\r\n if (isWhiteSpace(this.peekCodePoint(0))) {\r\n this.consumeCodePoint();\r\n }\r\n var hexCodePoint = parseInt(hex, 16);\r\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\r\n return REPLACEMENT_CHARACTER;\r\n }\r\n return hexCodePoint;\r\n }\r\n if (codePoint === EOF) {\r\n return REPLACEMENT_CHARACTER;\r\n }\r\n return codePoint;\r\n };\r\n Tokenizer.prototype.consumeName = function () {\r\n var result = '';\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (isNameCodePoint(codePoint)) {\r\n result += fromCodePoint(codePoint);\r\n }\r\n else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n result += fromCodePoint(this.consumeEscapedCodePoint());\r\n }\r\n else {\r\n this.reconsumeCodePoint(codePoint);\r\n return result;\r\n }\r\n }\r\n };\r\n return Tokenizer;\r\n }());\n\n var Parser = /** @class */ (function () {\r\n function Parser(tokens) {\r\n this._tokens = tokens;\r\n }\r\n Parser.create = function (value) {\r\n var tokenizer = new Tokenizer();\r\n tokenizer.write(value);\r\n return new Parser(tokenizer.read());\r\n };\r\n Parser.parseValue = function (value) {\r\n return Parser.create(value).parseComponentValue();\r\n };\r\n Parser.parseValues = function (value) {\r\n return Parser.create(value).parseComponentValues();\r\n };\r\n Parser.prototype.parseComponentValue = function () {\r\n var token = this.consumeToken();\r\n while (token.type === TokenType.WHITESPACE_TOKEN) {\r\n token = this.consumeToken();\r\n }\r\n if (token.type === TokenType.EOF_TOKEN) {\r\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\r\n }\r\n this.reconsumeToken(token);\r\n var value = this.consumeComponentValue();\r\n do {\r\n token = this.consumeToken();\r\n } while (token.type === TokenType.WHITESPACE_TOKEN);\r\n if (token.type === TokenType.EOF_TOKEN) {\r\n return value;\r\n }\r\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\r\n };\r\n Parser.prototype.parseComponentValues = function () {\r\n var values = [];\r\n while (true) {\r\n var value = this.consumeComponentValue();\r\n if (value.type === TokenType.EOF_TOKEN) {\r\n return values;\r\n }\r\n values.push(value);\r\n values.push();\r\n }\r\n };\r\n Parser.prototype.consumeComponentValue = function () {\r\n var token = this.consumeToken();\r\n switch (token.type) {\r\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\r\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\r\n case TokenType.LEFT_PARENTHESIS_TOKEN:\r\n return this.consumeSimpleBlock(token.type);\r\n case TokenType.FUNCTION_TOKEN:\r\n return this.consumeFunction(token);\r\n }\r\n return token;\r\n };\r\n Parser.prototype.consumeSimpleBlock = function (type) {\r\n var block = { type: type, values: [] };\r\n var token = this.consumeToken();\r\n while (true) {\r\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\r\n return block;\r\n }\r\n this.reconsumeToken(token);\r\n block.values.push(this.consumeComponentValue());\r\n token = this.consumeToken();\r\n }\r\n };\r\n Parser.prototype.consumeFunction = function (functionToken) {\r\n var cssFunction = {\r\n name: functionToken.value,\r\n values: [],\r\n type: TokenType.FUNCTION\r\n };\r\n while (true) {\r\n var token = this.consumeToken();\r\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\r\n return cssFunction;\r\n }\r\n this.reconsumeToken(token);\r\n cssFunction.values.push(this.consumeComponentValue());\r\n }\r\n };\r\n Parser.prototype.consumeToken = function () {\r\n var token = this._tokens.shift();\r\n return typeof token === 'undefined' ? EOF_TOKEN : token;\r\n };\r\n Parser.prototype.reconsumeToken = function (token) {\r\n this._tokens.unshift(token);\r\n };\r\n return Parser;\r\n }());\r\n var isDimensionToken = function (token) { return token.type === TokenType.DIMENSION_TOKEN; };\r\n var isNumberToken = function (token) { return token.type === TokenType.NUMBER_TOKEN; };\r\n var isIdentToken = function (token) { return token.type === TokenType.IDENT_TOKEN; };\r\n var isStringToken = function (token) { return token.type === TokenType.STRING_TOKEN; };\r\n var isIdentWithValue = function (token, value) {\r\n return isIdentToken(token) && token.value === value;\r\n };\r\n var nonWhiteSpace = function (token) { return token.type !== TokenType.WHITESPACE_TOKEN; };\r\n var nonFunctionArgSeparator = function (token) {\r\n return token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\r\n };\r\n var parseFunctionArgs = function (tokens) {\r\n var args = [];\r\n var arg = [];\r\n tokens.forEach(function (token) {\r\n if (token.type === TokenType.COMMA_TOKEN) {\r\n if (arg.length === 0) {\r\n throw new Error(\"Error parsing function args, zero tokens for arg\");\r\n }\r\n args.push(arg);\r\n arg = [];\r\n return;\r\n }\r\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\r\n arg.push(token);\r\n }\r\n });\r\n if (arg.length) {\r\n args.push(arg);\r\n }\r\n return args;\r\n };\r\n var isEndingTokenFor = function (token, type) {\r\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\r\n return true;\r\n }\r\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\r\n return true;\r\n }\r\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\r\n };\n\n var isLength = function (token) {\r\n return token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\r\n };\n\n var isLengthPercentage = function (token) {\r\n return token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\r\n };\r\n var parseLengthPercentageTuple = function (tokens) {\r\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\r\n };\r\n var ZERO_LENGTH = {\r\n type: TokenType.NUMBER_TOKEN,\r\n number: 0,\r\n flags: FLAG_INTEGER\r\n };\r\n var FIFTY_PERCENT = {\r\n type: TokenType.PERCENTAGE_TOKEN,\r\n number: 50,\r\n flags: FLAG_INTEGER\r\n };\r\n var HUNDRED_PERCENT = {\r\n type: TokenType.PERCENTAGE_TOKEN,\r\n number: 100,\r\n flags: FLAG_INTEGER\r\n };\r\n var getAbsoluteValueForTuple = function (tuple, width, height) {\r\n var x = tuple[0], y = tuple[1];\r\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\r\n };\r\n var getAbsoluteValue = function (token, parent) {\r\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\r\n return (token.number / 100) * parent;\r\n }\r\n if (isDimensionToken(token)) {\r\n switch (token.unit) {\r\n case 'rem':\r\n case 'em':\r\n return 16 * token.number; // TODO use correct font-size\r\n case 'px':\r\n default:\r\n return token.number;\r\n }\r\n }\r\n return token.number;\r\n };\n\n var DEG = 'deg';\r\n var GRAD = 'grad';\r\n var RAD = 'rad';\r\n var TURN = 'turn';\r\n var angle = {\r\n name: 'angle',\r\n parse: function (value) {\r\n if (value.type === TokenType.DIMENSION_TOKEN) {\r\n switch (value.unit) {\r\n case DEG:\r\n return (Math.PI * value.number) / 180;\r\n case GRAD:\r\n return (Math.PI / 200) * value.number;\r\n case RAD:\r\n return value.number;\r\n case TURN:\r\n return Math.PI * 2 * value.number;\r\n }\r\n }\r\n throw new Error(\"Unsupported angle type\");\r\n }\r\n };\r\n var isAngle = function (value) {\r\n if (value.type === TokenType.DIMENSION_TOKEN) {\r\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var parseNamedSide = function (tokens) {\r\n var sideOrCorner = tokens\r\n .filter(isIdentToken)\r\n .map(function (ident) { return ident.value; })\r\n .join(' ');\r\n switch (sideOrCorner) {\r\n case 'to bottom right':\r\n case 'to right bottom':\r\n case 'left top':\r\n case 'top left':\r\n return [ZERO_LENGTH, ZERO_LENGTH];\r\n case 'to top':\r\n case 'bottom':\r\n return deg(0);\r\n case 'to bottom left':\r\n case 'to left bottom':\r\n case 'right top':\r\n case 'top right':\r\n return [ZERO_LENGTH, HUNDRED_PERCENT];\r\n case 'to right':\r\n case 'left':\r\n return deg(90);\r\n case 'to top left':\r\n case 'to left top':\r\n case 'right bottom':\r\n case 'bottom right':\r\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\r\n case 'to bottom':\r\n case 'top':\r\n return deg(180);\r\n case 'to top right':\r\n case 'to right top':\r\n case 'left bottom':\r\n case 'bottom left':\r\n return [HUNDRED_PERCENT, ZERO_LENGTH];\r\n case 'to left':\r\n case 'right':\r\n return deg(270);\r\n }\r\n return 0;\r\n };\r\n var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n var color = {\r\n name: 'color',\r\n parse: function (value) {\r\n if (value.type === TokenType.FUNCTION) {\r\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\r\n if (typeof colorFunction === 'undefined') {\r\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\r\n }\r\n return colorFunction(value.values);\r\n }\r\n if (value.type === TokenType.HASH_TOKEN) {\r\n if (value.value.length === 3) {\r\n var r = value.value.substring(0, 1);\r\n var g = value.value.substring(1, 2);\r\n var b = value.value.substring(2, 3);\r\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\r\n }\r\n if (value.value.length === 4) {\r\n var r = value.value.substring(0, 1);\r\n var g = value.value.substring(1, 2);\r\n var b = value.value.substring(2, 3);\r\n var a = value.value.substring(3, 4);\r\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\r\n }\r\n if (value.value.length === 6) {\r\n var r = value.value.substring(0, 2);\r\n var g = value.value.substring(2, 4);\r\n var b = value.value.substring(4, 6);\r\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\r\n }\r\n if (value.value.length === 8) {\r\n var r = value.value.substring(0, 2);\r\n var g = value.value.substring(2, 4);\r\n var b = value.value.substring(4, 6);\r\n var a = value.value.substring(6, 8);\r\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\r\n }\r\n }\r\n if (value.type === TokenType.IDENT_TOKEN) {\r\n var namedColor = COLORS[value.value.toUpperCase()];\r\n if (typeof namedColor !== 'undefined') {\r\n return namedColor;\r\n }\r\n }\r\n return COLORS.TRANSPARENT;\r\n }\r\n };\r\n var isTransparent = function (color) { return (0xff & color) === 0; };\r\n var asString = function (color) {\r\n var alpha = 0xff & color;\r\n var blue = 0xff & (color >> 8);\r\n var green = 0xff & (color >> 16);\r\n var red = 0xff & (color >> 24);\r\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\r\n };\r\n var pack = function (r, g, b, a) {\r\n return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\r\n };\r\n var getTokenColorValue = function (token, i) {\r\n if (token.type === TokenType.NUMBER_TOKEN) {\r\n return token.number;\r\n }\r\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\r\n var max = i === 3 ? 1 : 255;\r\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\r\n }\r\n return 0;\r\n };\r\n var rgb = function (args) {\r\n var tokens = args.filter(nonFunctionArgSeparator);\r\n if (tokens.length === 3) {\r\n var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\r\n return pack(r, g, b, 1);\r\n }\r\n if (tokens.length === 4) {\r\n var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\r\n return pack(r, g, b, a);\r\n }\r\n return 0;\r\n };\r\n function hue2rgb(t1, t2, hue) {\r\n if (hue < 0) {\r\n hue += 1;\r\n }\r\n if (hue >= 1) {\r\n hue -= 1;\r\n }\r\n if (hue < 1 / 6) {\r\n return (t2 - t1) * hue * 6 + t1;\r\n }\r\n else if (hue < 1 / 2) {\r\n return t2;\r\n }\r\n else if (hue < 2 / 3) {\r\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\r\n }\r\n else {\r\n return t1;\r\n }\r\n }\r\n var hsl = function (args) {\r\n var tokens = args.filter(nonFunctionArgSeparator);\r\n var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\r\n var h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);\r\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\r\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\r\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\r\n if (s === 0) {\r\n return pack(l * 255, l * 255, l * 255, 1);\r\n }\r\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n var t1 = l * 2 - t2;\r\n var r = hue2rgb(t1, t2, h + 1 / 3);\r\n var g = hue2rgb(t1, t2, h);\r\n var b = hue2rgb(t1, t2, h - 1 / 3);\r\n return pack(r * 255, g * 255, b * 255, a);\r\n };\r\n var SUPPORTED_COLOR_FUNCTIONS = {\r\n hsl: hsl,\r\n hsla: hsl,\r\n rgb: rgb,\r\n rgba: rgb\r\n };\r\n var COLORS = {\r\n ALICEBLUE: 0xf0f8ffff,\r\n ANTIQUEWHITE: 0xfaebd7ff,\r\n AQUA: 0x00ffffff,\r\n AQUAMARINE: 0x7fffd4ff,\r\n AZURE: 0xf0ffffff,\r\n BEIGE: 0xf5f5dcff,\r\n BISQUE: 0xffe4c4ff,\r\n BLACK: 0x000000ff,\r\n BLANCHEDALMOND: 0xffebcdff,\r\n BLUE: 0x0000ffff,\r\n BLUEVIOLET: 0x8a2be2ff,\r\n BROWN: 0xa52a2aff,\r\n BURLYWOOD: 0xdeb887ff,\r\n CADETBLUE: 0x5f9ea0ff,\r\n CHARTREUSE: 0x7fff00ff,\r\n CHOCOLATE: 0xd2691eff,\r\n CORAL: 0xff7f50ff,\r\n CORNFLOWERBLUE: 0x6495edff,\r\n CORNSILK: 0xfff8dcff,\r\n CRIMSON: 0xdc143cff,\r\n CYAN: 0x00ffffff,\r\n DARKBLUE: 0x00008bff,\r\n DARKCYAN: 0x008b8bff,\r\n DARKGOLDENROD: 0xb886bbff,\r\n DARKGRAY: 0xa9a9a9ff,\r\n DARKGREEN: 0x006400ff,\r\n DARKGREY: 0xa9a9a9ff,\r\n DARKKHAKI: 0xbdb76bff,\r\n DARKMAGENTA: 0x8b008bff,\r\n DARKOLIVEGREEN: 0x556b2fff,\r\n DARKORANGE: 0xff8c00ff,\r\n DARKORCHID: 0x9932ccff,\r\n DARKRED: 0x8b0000ff,\r\n DARKSALMON: 0xe9967aff,\r\n DARKSEAGREEN: 0x8fbc8fff,\r\n DARKSLATEBLUE: 0x483d8bff,\r\n DARKSLATEGRAY: 0x2f4f4fff,\r\n DARKSLATEGREY: 0x2f4f4fff,\r\n DARKTURQUOISE: 0x00ced1ff,\r\n DARKVIOLET: 0x9400d3ff,\r\n DEEPPINK: 0xff1493ff,\r\n DEEPSKYBLUE: 0x00bfffff,\r\n DIMGRAY: 0x696969ff,\r\n DIMGREY: 0x696969ff,\r\n DODGERBLUE: 0x1e90ffff,\r\n FIREBRICK: 0xb22222ff,\r\n FLORALWHITE: 0xfffaf0ff,\r\n FORESTGREEN: 0x228b22ff,\r\n FUCHSIA: 0xff00ffff,\r\n GAINSBORO: 0xdcdcdcff,\r\n GHOSTWHITE: 0xf8f8ffff,\r\n GOLD: 0xffd700ff,\r\n GOLDENROD: 0xdaa520ff,\r\n GRAY: 0x808080ff,\r\n GREEN: 0x008000ff,\r\n GREENYELLOW: 0xadff2fff,\r\n GREY: 0x808080ff,\r\n HONEYDEW: 0xf0fff0ff,\r\n HOTPINK: 0xff69b4ff,\r\n INDIANRED: 0xcd5c5cff,\r\n INDIGO: 0x4b0082ff,\r\n IVORY: 0xfffff0ff,\r\n KHAKI: 0xf0e68cff,\r\n LAVENDER: 0xe6e6faff,\r\n LAVENDERBLUSH: 0xfff0f5ff,\r\n LAWNGREEN: 0x7cfc00ff,\r\n LEMONCHIFFON: 0xfffacdff,\r\n LIGHTBLUE: 0xadd8e6ff,\r\n LIGHTCORAL: 0xf08080ff,\r\n LIGHTCYAN: 0xe0ffffff,\r\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\r\n LIGHTGRAY: 0xd3d3d3ff,\r\n LIGHTGREEN: 0x90ee90ff,\r\n LIGHTGREY: 0xd3d3d3ff,\r\n LIGHTPINK: 0xffb6c1ff,\r\n LIGHTSALMON: 0xffa07aff,\r\n LIGHTSEAGREEN: 0x20b2aaff,\r\n LIGHTSKYBLUE: 0x87cefaff,\r\n LIGHTSLATEGRAY: 0x778899ff,\r\n LIGHTSLATEGREY: 0x778899ff,\r\n LIGHTSTEELBLUE: 0xb0c4deff,\r\n LIGHTYELLOW: 0xffffe0ff,\r\n LIME: 0x00ff00ff,\r\n LIMEGREEN: 0x32cd32ff,\r\n LINEN: 0xfaf0e6ff,\r\n MAGENTA: 0xff00ffff,\r\n MAROON: 0x800000ff,\r\n MEDIUMAQUAMARINE: 0x66cdaaff,\r\n MEDIUMBLUE: 0x0000cdff,\r\n MEDIUMORCHID: 0xba55d3ff,\r\n MEDIUMPURPLE: 0x9370dbff,\r\n MEDIUMSEAGREEN: 0x3cb371ff,\r\n MEDIUMSLATEBLUE: 0x7b68eeff,\r\n MEDIUMSPRINGGREEN: 0x00fa9aff,\r\n MEDIUMTURQUOISE: 0x48d1ccff,\r\n MEDIUMVIOLETRED: 0xc71585ff,\r\n MIDNIGHTBLUE: 0x191970ff,\r\n MINTCREAM: 0xf5fffaff,\r\n MISTYROSE: 0xffe4e1ff,\r\n MOCCASIN: 0xffe4b5ff,\r\n NAVAJOWHITE: 0xffdeadff,\r\n NAVY: 0x000080ff,\r\n OLDLACE: 0xfdf5e6ff,\r\n OLIVE: 0x808000ff,\r\n OLIVEDRAB: 0x6b8e23ff,\r\n ORANGE: 0xffa500ff,\r\n ORANGERED: 0xff4500ff,\r\n ORCHID: 0xda70d6ff,\r\n PALEGOLDENROD: 0xeee8aaff,\r\n PALEGREEN: 0x98fb98ff,\r\n PALETURQUOISE: 0xafeeeeff,\r\n PALEVIOLETRED: 0xdb7093ff,\r\n PAPAYAWHIP: 0xffefd5ff,\r\n PEACHPUFF: 0xffdab9ff,\r\n PERU: 0xcd853fff,\r\n PINK: 0xffc0cbff,\r\n PLUM: 0xdda0ddff,\r\n POWDERBLUE: 0xb0e0e6ff,\r\n PURPLE: 0x800080ff,\r\n REBECCAPURPLE: 0x663399ff,\r\n RED: 0xff0000ff,\r\n ROSYBROWN: 0xbc8f8fff,\r\n ROYALBLUE: 0x4169e1ff,\r\n SADDLEBROWN: 0x8b4513ff,\r\n SALMON: 0xfa8072ff,\r\n SANDYBROWN: 0xf4a460ff,\r\n SEAGREEN: 0x2e8b57ff,\r\n SEASHELL: 0xfff5eeff,\r\n SIENNA: 0xa0522dff,\r\n SILVER: 0xc0c0c0ff,\r\n SKYBLUE: 0x87ceebff,\r\n SLATEBLUE: 0x6a5acdff,\r\n SLATEGRAY: 0x708090ff,\r\n SLATEGREY: 0x708090ff,\r\n SNOW: 0xfffafaff,\r\n SPRINGGREEN: 0x00ff7fff,\r\n STEELBLUE: 0x4682b4ff,\r\n TAN: 0xd2b48cff,\r\n TEAL: 0x008080ff,\r\n THISTLE: 0xd8bfd8ff,\r\n TOMATO: 0xff6347ff,\r\n TRANSPARENT: 0x00000000,\r\n TURQUOISE: 0x40e0d0ff,\r\n VIOLET: 0xee82eeff,\r\n WHEAT: 0xf5deb3ff,\r\n WHITE: 0xffffffff,\r\n WHITESMOKE: 0xf5f5f5ff,\r\n YELLOW: 0xffff00ff,\r\n YELLOWGREEN: 0x9acd32ff\r\n };\n\n var PropertyDescriptorParsingType;\r\n (function (PropertyDescriptorParsingType) {\r\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"VALUE\"] = 0] = \"VALUE\";\r\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"LIST\"] = 1] = \"LIST\";\r\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"IDENT_VALUE\"] = 2] = \"IDENT_VALUE\";\r\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TYPE_VALUE\"] = 3] = \"TYPE_VALUE\";\r\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TOKEN_VALUE\"] = 4] = \"TOKEN_VALUE\";\r\n })(PropertyDescriptorParsingType || (PropertyDescriptorParsingType = {}));\n\n var BACKGROUND_CLIP;\r\n (function (BACKGROUND_CLIP) {\r\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"BORDER_BOX\"] = 0] = \"BORDER_BOX\";\r\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"PADDING_BOX\"] = 1] = \"PADDING_BOX\";\r\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"CONTENT_BOX\"] = 2] = \"CONTENT_BOX\";\r\n })(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));\r\n var backgroundClip = {\r\n name: 'background-clip',\r\n initialValue: 'border-box',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens.map(function (token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case 'padding-box':\r\n return BACKGROUND_CLIP.PADDING_BOX;\r\n case 'content-box':\r\n return BACKGROUND_CLIP.CONTENT_BOX;\r\n }\r\n }\r\n return BACKGROUND_CLIP.BORDER_BOX;\r\n });\r\n }\r\n };\n\n var backgroundColor = {\r\n name: \"background-color\",\r\n initialValue: 'transparent',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'color'\r\n };\n\n var parseColorStop = function (args) {\r\n var color$1 = color.parse(args[0]);\r\n var stop = args[1];\r\n return stop && isLengthPercentage(stop) ? { color: color$1, stop: stop } : { color: color$1, stop: null };\r\n };\r\n var processColorStops = function (stops, lineLength) {\r\n var first = stops[0];\r\n var last = stops[stops.length - 1];\r\n if (first.stop === null) {\r\n first.stop = ZERO_LENGTH;\r\n }\r\n if (last.stop === null) {\r\n last.stop = HUNDRED_PERCENT;\r\n }\r\n var processStops = [];\r\n var previous = 0;\r\n for (var i = 0; i < stops.length; i++) {\r\n var stop_1 = stops[i].stop;\r\n if (stop_1 !== null) {\r\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\r\n if (absoluteValue > previous) {\r\n processStops.push(absoluteValue);\r\n }\r\n else {\r\n processStops.push(previous);\r\n }\r\n previous = absoluteValue;\r\n }\r\n else {\r\n processStops.push(null);\r\n }\r\n }\r\n var gapBegin = null;\r\n for (var i = 0; i < processStops.length; i++) {\r\n var stop_2 = processStops[i];\r\n if (stop_2 === null) {\r\n if (gapBegin === null) {\r\n gapBegin = i;\r\n }\r\n }\r\n else if (gapBegin !== null) {\r\n var gapLength = i - gapBegin;\r\n var beforeGap = processStops[gapBegin - 1];\r\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\r\n for (var g = 1; g <= gapLength; g++) {\r\n processStops[gapBegin + g - 1] = gapValue * g;\r\n }\r\n gapBegin = null;\r\n }\r\n }\r\n return stops.map(function (_a, i) {\r\n var color = _a.color;\r\n return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\r\n });\r\n };\r\n var getAngleFromCorner = function (corner, width, height) {\r\n var centerX = width / 2;\r\n var centerY = height / 2;\r\n var x = getAbsoluteValue(corner[0], width) - centerX;\r\n var y = centerY - getAbsoluteValue(corner[1], height);\r\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\r\n };\r\n var calculateGradientDirection = function (angle, width, height) {\r\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\r\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\r\n var halfWidth = width / 2;\r\n var halfHeight = height / 2;\r\n var halfLineLength = lineLength / 2;\r\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\r\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\r\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\r\n };\r\n var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\r\n var findCorner = function (width, height, x, y, closest) {\r\n var corners = [[0, 0], [0, height], [width, 0], [width, height]];\r\n return corners.reduce(function (stat, corner) {\r\n var cx = corner[0], cy = corner[1];\r\n var d = distance(x - cx, y - cy);\r\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\r\n return {\r\n optimumCorner: corner,\r\n optimumDistance: d\r\n };\r\n }\r\n return stat;\r\n }, {\r\n optimumDistance: closest ? Infinity : -Infinity,\r\n optimumCorner: null\r\n }).optimumCorner;\r\n };\r\n var calculateRadius = function (gradient, x, y, width, height) {\r\n var rx = 0;\r\n var ry = 0;\r\n switch (gradient.size) {\r\n case CSSRadialExtent.CLOSEST_SIDE:\r\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\r\n if (gradient.shape === CSSRadialShape.CIRCLE) {\r\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\r\n }\r\n else if (gradient.shape === CSSRadialShape.ELLIPSE) {\r\n rx = Math.min(Math.abs(x), Math.abs(x - width));\r\n ry = Math.min(Math.abs(y), Math.abs(y - height));\r\n }\r\n break;\r\n case CSSRadialExtent.CLOSEST_CORNER:\r\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\r\n if (gradient.shape === CSSRadialShape.CIRCLE) {\r\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\r\n }\r\n else if (gradient.shape === CSSRadialShape.ELLIPSE) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\r\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\r\n var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\r\n rx = distance(cx - x, (cy - y) / c);\r\n ry = c * rx;\r\n }\r\n break;\r\n case CSSRadialExtent.FARTHEST_SIDE:\r\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\r\n if (gradient.shape === CSSRadialShape.CIRCLE) {\r\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\r\n }\r\n else if (gradient.shape === CSSRadialShape.ELLIPSE) {\r\n rx = Math.max(Math.abs(x), Math.abs(x - width));\r\n ry = Math.max(Math.abs(y), Math.abs(y - height));\r\n }\r\n break;\r\n case CSSRadialExtent.FARTHEST_CORNER:\r\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\r\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\r\n if (gradient.shape === CSSRadialShape.CIRCLE) {\r\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\r\n }\r\n else if (gradient.shape === CSSRadialShape.ELLIPSE) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\r\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\r\n var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\r\n rx = distance(cx - x, (cy - y) / c);\r\n ry = c * rx;\r\n }\r\n break;\r\n }\r\n if (Array.isArray(gradient.size)) {\r\n rx = getAbsoluteValue(gradient.size[0], width);\r\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\r\n }\r\n return [rx, ry];\r\n };\n\n var linearGradient = function (tokens) {\r\n var angle$1 = deg(180);\r\n var stops = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n if (i === 0) {\r\n var firstToken = arg[0];\r\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\r\n angle$1 = parseNamedSide(arg);\r\n return;\r\n }\r\n else if (isAngle(firstToken)) {\r\n angle$1 = angle.parse(firstToken);\r\n return;\r\n }\r\n }\r\n var colorStop = parseColorStop(arg);\r\n stops.push(colorStop);\r\n });\r\n return { angle: angle$1, stops: stops, type: CSSImageType.LINEAR_GRADIENT };\r\n };\n\n var prefixLinearGradient = function (tokens) {\r\n var angle$1 = deg(180);\r\n var stops = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n if (i === 0) {\r\n var firstToken = arg[0];\r\n if (firstToken.type === TokenType.IDENT_TOKEN &&\r\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\r\n angle$1 = parseNamedSide(arg);\r\n return;\r\n }\r\n else if (isAngle(firstToken)) {\r\n angle$1 = (angle.parse(firstToken) + deg(270)) % deg(360);\r\n return;\r\n }\r\n }\r\n var colorStop = parseColorStop(arg);\r\n stops.push(colorStop);\r\n });\r\n return {\r\n angle: angle$1,\r\n stops: stops,\r\n type: CSSImageType.LINEAR_GRADIENT\r\n };\r\n };\n\n var testRangeBounds = function (document) {\r\n var TEST_HEIGHT = 123;\r\n if (document.createRange) {\r\n var range = document.createRange();\r\n if (range.getBoundingClientRect) {\r\n var testElement = document.createElement('boundtest');\r\n testElement.style.height = TEST_HEIGHT + \"px\";\r\n testElement.style.display = 'block';\r\n document.body.appendChild(testElement);\r\n range.selectNode(testElement);\r\n var rangeBounds = range.getBoundingClientRect();\r\n var rangeHeight = Math.round(rangeBounds.height);\r\n document.body.removeChild(testElement);\r\n if (rangeHeight === TEST_HEIGHT) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\r\n var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\r\n var testSVG = function (document) {\r\n var img = new Image();\r\n var canvas = document.createElement('canvas');\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx) {\r\n return false;\r\n }\r\n img.src = \"data:image/svg+xml,\";\r\n try {\r\n ctx.drawImage(img, 0, 0);\r\n canvas.toDataURL();\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n var isGreenPixel = function (data) {\r\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\r\n };\r\n var testForeignObject = function (document) {\r\n var canvas = document.createElement('canvas');\r\n var size = 100;\r\n canvas.width = size;\r\n canvas.height = size;\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx) {\r\n return Promise.reject(false);\r\n }\r\n ctx.fillStyle = 'rgb(0, 255, 0)';\r\n ctx.fillRect(0, 0, size, size);\r\n var img = new Image();\r\n var greenImageSrc = canvas.toDataURL();\r\n img.src = greenImageSrc;\r\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\r\n ctx.fillStyle = 'red';\r\n ctx.fillRect(0, 0, size, size);\r\n return loadSerializedSVG(svg)\r\n .then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n var data = ctx.getImageData(0, 0, size, size).data;\r\n ctx.fillStyle = 'red';\r\n ctx.fillRect(0, 0, size, size);\r\n var node = document.createElement('div');\r\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\r\n node.style.height = size + \"px\";\r\n // Firefox 55 does not render inline tags\r\n return isGreenPixel(data)\r\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\r\n : Promise.reject(false);\r\n })\r\n .then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n // Edge does not render background-images\r\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\r\n })\r\n .catch(function () { return false; });\r\n };\r\n var createForeignObjectSVG = function (width, height, x, y, node) {\r\n var xmlns = 'http://www.w3.org/2000/svg';\r\n var svg = document.createElementNS(xmlns, 'svg');\r\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\r\n svg.setAttributeNS(null, 'width', width.toString());\r\n svg.setAttributeNS(null, 'height', height.toString());\r\n foreignObject.setAttributeNS(null, 'width', '100%');\r\n foreignObject.setAttributeNS(null, 'height', '100%');\r\n foreignObject.setAttributeNS(null, 'x', x.toString());\r\n foreignObject.setAttributeNS(null, 'y', y.toString());\r\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\r\n svg.appendChild(foreignObject);\r\n foreignObject.appendChild(node);\r\n return svg;\r\n };\r\n var loadSerializedSVG = function (svg) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () { return resolve(img); };\r\n img.onerror = reject;\r\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\r\n });\r\n };\r\n var FEATURES = {\r\n get SUPPORT_RANGE_BOUNDS() {\r\n var value = testRangeBounds(document);\r\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\r\n return value;\r\n },\r\n get SUPPORT_SVG_DRAWING() {\r\n var value = testSVG(document);\r\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\r\n return value;\r\n },\r\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\r\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\r\n ? testForeignObject(document)\r\n : Promise.resolve(false);\r\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\r\n return value;\r\n },\r\n get SUPPORT_CORS_IMAGES() {\r\n var value = testCORS();\r\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\r\n return value;\r\n },\r\n get SUPPORT_RESPONSE_TYPE() {\r\n var value = testResponseType();\r\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\r\n return value;\r\n },\r\n get SUPPORT_CORS_XHR() {\r\n var value = 'withCredentials' in new XMLHttpRequest();\r\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\r\n return value;\r\n }\r\n };\n\n var Logger = /** @class */ (function () {\r\n function Logger(_a) {\r\n var id = _a.id, enabled = _a.enabled;\r\n this.id = id;\r\n this.enabled = enabled;\r\n this.start = Date.now();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n Logger.prototype.debug = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (this.enabled) {\r\n // eslint-disable-next-line no-console\r\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\r\n // eslint-disable-next-line no-console\r\n console.debug.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\r\n }\r\n else {\r\n this.info.apply(this, args);\r\n }\r\n }\r\n };\r\n Logger.prototype.getTime = function () {\r\n return Date.now() - this.start;\r\n };\r\n Logger.create = function (options) {\r\n Logger.instances[options.id] = new Logger(options);\r\n };\r\n Logger.destroy = function (id) {\r\n delete Logger.instances[id];\r\n };\r\n Logger.getInstance = function (id) {\r\n var instance = Logger.instances[id];\r\n if (typeof instance === 'undefined') {\r\n throw new Error(\"No logger instance found with id \" + id);\r\n }\r\n return instance;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n Logger.prototype.info = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (this.enabled) {\r\n // eslint-disable-next-line no-console\r\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\r\n // eslint-disable-next-line no-console\r\n console.info.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\r\n }\r\n }\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n Logger.prototype.error = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (this.enabled) {\r\n // eslint-disable-next-line no-console\r\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\r\n // eslint-disable-next-line no-console\r\n console.error.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\r\n }\r\n else {\r\n this.info.apply(this, args);\r\n }\r\n }\r\n };\r\n Logger.instances = {};\r\n return Logger;\r\n }());\n\n var CacheStorage = /** @class */ (function () {\r\n function CacheStorage() {\r\n }\r\n CacheStorage.create = function (name, options) {\r\n return (CacheStorage._caches[name] = new Cache(name, options));\r\n };\r\n CacheStorage.destroy = function (name) {\r\n delete CacheStorage._caches[name];\r\n };\r\n CacheStorage.open = function (name) {\r\n var cache = CacheStorage._caches[name];\r\n if (typeof cache !== 'undefined') {\r\n return cache;\r\n }\r\n throw new Error(\"Cache with key \\\"\" + name + \"\\\" not found\");\r\n };\r\n CacheStorage.getOrigin = function (url) {\r\n var link = CacheStorage._link;\r\n if (!link) {\r\n return 'about:blank';\r\n }\r\n link.href = url;\r\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\r\n return link.protocol + link.hostname + link.port;\r\n };\r\n CacheStorage.isSameOrigin = function (src) {\r\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\r\n };\r\n CacheStorage.setContext = function (window) {\r\n CacheStorage._link = window.document.createElement('a');\r\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\r\n };\r\n CacheStorage.getInstance = function () {\r\n var current = CacheStorage._current;\r\n if (current === null) {\r\n throw new Error(\"No cache instance attached\");\r\n }\r\n return current;\r\n };\r\n CacheStorage.attachInstance = function (cache) {\r\n CacheStorage._current = cache;\r\n };\r\n CacheStorage.detachInstance = function () {\r\n CacheStorage._current = null;\r\n };\r\n CacheStorage._caches = {};\r\n CacheStorage._origin = 'about:blank';\r\n CacheStorage._current = null;\r\n return CacheStorage;\r\n }());\r\n var Cache = /** @class */ (function () {\r\n function Cache(id, options) {\r\n this.id = id;\r\n this._options = options;\r\n this._cache = {};\r\n }\r\n Cache.prototype.addImage = function (src) {\r\n var result = Promise.resolve();\r\n if (this.has(src)) {\r\n return result;\r\n }\r\n if (isBlobImage(src) || isRenderable(src)) {\r\n this._cache[src] = this.loadImage(src);\r\n return result;\r\n }\r\n return result;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n Cache.prototype.match = function (src) {\r\n return this._cache[src];\r\n };\r\n Cache.prototype.loadImage = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isSameOrigin, useCORS, useProxy, src;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n isSameOrigin = CacheStorage.isSameOrigin(key);\r\n useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\r\n useProxy = !isInlineImage(key) &&\r\n !isSameOrigin &&\r\n typeof this._options.proxy === 'string' &&\r\n FEATURES.SUPPORT_CORS_XHR &&\r\n !useCORS;\r\n if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {\r\n return [2 /*return*/];\r\n }\r\n src = key;\r\n if (!useProxy) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.proxy(src)];\r\n case 1:\r\n src = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n Logger.getInstance(this.id).debug(\"Added image \" + key.substring(0, 256));\r\n return [4 /*yield*/, new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () { return resolve(img); };\r\n img.onerror = reject;\r\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\r\n if (isInlineBase64Image(src) || useCORS) {\r\n img.crossOrigin = 'anonymous';\r\n }\r\n img.src = src;\r\n if (img.complete === true) {\r\n // Inline XML images may fail to parse, throwing an Error later on\r\n setTimeout(function () { return resolve(img); }, 500);\r\n }\r\n if (_this._options.imageTimeout > 0) {\r\n setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\r\n }\r\n })];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n Cache.prototype.has = function (key) {\r\n return typeof this._cache[key] !== 'undefined';\r\n };\r\n Cache.prototype.keys = function () {\r\n return Promise.resolve(Object.keys(this._cache));\r\n };\r\n Cache.prototype.proxy = function (src) {\r\n var _this = this;\r\n var proxy = this._options.proxy;\r\n if (!proxy) {\r\n throw new Error('No proxy defined');\r\n }\r\n var key = src.substring(0, 256);\r\n return new Promise(function (resolve, reject) {\r\n var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\r\n var xhr = new XMLHttpRequest();\r\n xhr.onload = function () {\r\n if (xhr.status === 200) {\r\n if (responseType === 'text') {\r\n resolve(xhr.response);\r\n }\r\n else {\r\n var reader_1 = new FileReader();\r\n reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\r\n reader_1.addEventListener('error', function (e) { return reject(e); }, false);\r\n reader_1.readAsDataURL(xhr.response);\r\n }\r\n }\r\n else {\r\n reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\r\n }\r\n };\r\n xhr.onerror = reject;\r\n xhr.open('GET', proxy + \"?url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\r\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\r\n xhr.responseType = responseType;\r\n }\r\n if (_this._options.imageTimeout) {\r\n var timeout_1 = _this._options.imageTimeout;\r\n xhr.timeout = timeout_1;\r\n xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\r\n }\r\n xhr.send();\r\n });\r\n };\r\n return Cache;\r\n }());\r\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\r\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\r\n var INLINE_IMG = /^data:image\\/.*/i;\r\n var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\r\n var isInlineImage = function (src) { return INLINE_IMG.test(src); };\r\n var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\r\n var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\r\n var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\n var webkitGradient = function (tokens) {\r\n var angle = deg(180);\r\n var stops = [];\r\n var type = CSSImageType.LINEAR_GRADIENT;\r\n var shape = CSSRadialShape.CIRCLE;\r\n var size = CSSRadialExtent.FARTHEST_CORNER;\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var firstToken = arg[0];\r\n if (i === 0) {\r\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\r\n type = CSSImageType.LINEAR_GRADIENT;\r\n return;\r\n }\r\n else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\r\n type = CSSImageType.RADIAL_GRADIENT;\r\n return;\r\n }\r\n }\r\n if (firstToken.type === TokenType.FUNCTION) {\r\n if (firstToken.name === 'from') {\r\n var color$1 = color.parse(firstToken.values[0]);\r\n stops.push({ stop: ZERO_LENGTH, color: color$1 });\r\n }\r\n else if (firstToken.name === 'to') {\r\n var color$1 = color.parse(firstToken.values[0]);\r\n stops.push({ stop: HUNDRED_PERCENT, color: color$1 });\r\n }\r\n else if (firstToken.name === 'color-stop') {\r\n var values = firstToken.values.filter(nonFunctionArgSeparator);\r\n if (values.length === 2) {\r\n var color$1 = color.parse(values[1]);\r\n var stop_1 = values[0];\r\n if (isNumberToken(stop_1)) {\r\n stops.push({\r\n stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop_1.number * 100, flags: stop_1.flags },\r\n color: color$1\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return type === CSSImageType.LINEAR_GRADIENT\r\n ? {\r\n angle: (angle + deg(180)) % deg(360),\r\n stops: stops,\r\n type: type\r\n }\r\n : { size: size, shape: shape, stops: stops, position: position, type: type };\r\n };\n\n var CLOSEST_SIDE = 'closest-side';\r\n var FARTHEST_SIDE = 'farthest-side';\r\n var CLOSEST_CORNER = 'closest-corner';\r\n var FARTHEST_CORNER = 'farthest-corner';\r\n var CIRCLE = 'circle';\r\n var ELLIPSE = 'ellipse';\r\n var COVER = 'cover';\r\n var CONTAIN = 'contain';\r\n var radialGradient = function (tokens) {\r\n var shape = CSSRadialShape.CIRCLE;\r\n var size = CSSRadialExtent.FARTHEST_CORNER;\r\n var stops = [];\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var isColorStop = true;\r\n if (i === 0) {\r\n var isAtPosition_1 = false;\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isAtPosition_1) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case 'center':\r\n position.push(FIFTY_PERCENT);\r\n return acc;\r\n case 'top':\r\n case 'left':\r\n position.push(ZERO_LENGTH);\r\n return acc;\r\n case 'right':\r\n case 'bottom':\r\n position.push(HUNDRED_PERCENT);\r\n return acc;\r\n }\r\n }\r\n else if (isLengthPercentage(token) || isLength(token)) {\r\n position.push(token);\r\n }\r\n }\r\n else if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case CIRCLE:\r\n shape = CSSRadialShape.CIRCLE;\r\n return false;\r\n case ELLIPSE:\r\n shape = CSSRadialShape.ELLIPSE;\r\n return false;\r\n case 'at':\r\n isAtPosition_1 = true;\r\n return false;\r\n case CLOSEST_SIDE:\r\n size = CSSRadialExtent.CLOSEST_SIDE;\r\n return false;\r\n case COVER:\r\n case FARTHEST_SIDE:\r\n size = CSSRadialExtent.FARTHEST_SIDE;\r\n return false;\r\n case CONTAIN:\r\n case CLOSEST_CORNER:\r\n size = CSSRadialExtent.CLOSEST_CORNER;\r\n return false;\r\n case FARTHEST_CORNER:\r\n size = CSSRadialExtent.FARTHEST_CORNER;\r\n return false;\r\n }\r\n }\r\n else if (isLength(token) || isLengthPercentage(token)) {\r\n if (!Array.isArray(size)) {\r\n size = [];\r\n }\r\n size.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n }\r\n if (isColorStop) {\r\n var colorStop = parseColorStop(arg);\r\n stops.push(colorStop);\r\n }\r\n });\r\n return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };\r\n };\n\n var prefixRadialGradient = function (tokens) {\r\n var shape = CSSRadialShape.CIRCLE;\r\n var size = CSSRadialExtent.FARTHEST_CORNER;\r\n var stops = [];\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var isColorStop = true;\r\n if (i === 0) {\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case 'center':\r\n position.push(FIFTY_PERCENT);\r\n return false;\r\n case 'top':\r\n case 'left':\r\n position.push(ZERO_LENGTH);\r\n return false;\r\n case 'right':\r\n case 'bottom':\r\n position.push(HUNDRED_PERCENT);\r\n return false;\r\n }\r\n }\r\n else if (isLengthPercentage(token) || isLength(token)) {\r\n position.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n }\r\n else if (i === 1) {\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case CIRCLE:\r\n shape = CSSRadialShape.CIRCLE;\r\n return false;\r\n case ELLIPSE:\r\n shape = CSSRadialShape.ELLIPSE;\r\n return false;\r\n case CONTAIN:\r\n case CLOSEST_SIDE:\r\n size = CSSRadialExtent.CLOSEST_SIDE;\r\n return false;\r\n case FARTHEST_SIDE:\r\n size = CSSRadialExtent.FARTHEST_SIDE;\r\n return false;\r\n case CLOSEST_CORNER:\r\n size = CSSRadialExtent.CLOSEST_CORNER;\r\n return false;\r\n case COVER:\r\n case FARTHEST_CORNER:\r\n size = CSSRadialExtent.FARTHEST_CORNER;\r\n return false;\r\n }\r\n }\r\n else if (isLength(token) || isLengthPercentage(token)) {\r\n if (!Array.isArray(size)) {\r\n size = [];\r\n }\r\n size.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n }\r\n if (isColorStop) {\r\n var colorStop = parseColorStop(arg);\r\n stops.push(colorStop);\r\n }\r\n });\r\n return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };\r\n };\n\n var CSSImageType;\r\n (function (CSSImageType) {\r\n CSSImageType[CSSImageType[\"URL\"] = 0] = \"URL\";\r\n CSSImageType[CSSImageType[\"LINEAR_GRADIENT\"] = 1] = \"LINEAR_GRADIENT\";\r\n CSSImageType[CSSImageType[\"RADIAL_GRADIENT\"] = 2] = \"RADIAL_GRADIENT\";\r\n })(CSSImageType || (CSSImageType = {}));\r\n var isLinearGradient = function (background) {\r\n return background.type === CSSImageType.LINEAR_GRADIENT;\r\n };\r\n var isRadialGradient = function (background) {\r\n return background.type === CSSImageType.RADIAL_GRADIENT;\r\n };\r\n var CSSRadialShape;\r\n (function (CSSRadialShape) {\r\n CSSRadialShape[CSSRadialShape[\"CIRCLE\"] = 0] = \"CIRCLE\";\r\n CSSRadialShape[CSSRadialShape[\"ELLIPSE\"] = 1] = \"ELLIPSE\";\r\n })(CSSRadialShape || (CSSRadialShape = {}));\r\n var CSSRadialExtent;\r\n (function (CSSRadialExtent) {\r\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_SIDE\"] = 0] = \"CLOSEST_SIDE\";\r\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_SIDE\"] = 1] = \"FARTHEST_SIDE\";\r\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_CORNER\"] = 2] = \"CLOSEST_CORNER\";\r\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_CORNER\"] = 3] = \"FARTHEST_CORNER\";\r\n })(CSSRadialExtent || (CSSRadialExtent = {}));\r\n var image = {\r\n name: 'image',\r\n parse: function (value) {\r\n if (value.type === TokenType.URL_TOKEN) {\r\n var image_1 = { url: value.value, type: CSSImageType.URL };\r\n CacheStorage.getInstance().addImage(value.value);\r\n return image_1;\r\n }\r\n if (value.type === TokenType.FUNCTION) {\r\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\r\n if (typeof imageFunction === 'undefined') {\r\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\r\n }\r\n return imageFunction(value.values);\r\n }\r\n throw new Error(\"Unsupported image type\");\r\n }\r\n };\r\n function isSupportedImage(value) {\r\n return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];\r\n }\r\n var SUPPORTED_IMAGE_FUNCTIONS = {\r\n 'linear-gradient': linearGradient,\r\n '-moz-linear-gradient': prefixLinearGradient,\r\n '-ms-linear-gradient': prefixLinearGradient,\r\n '-o-linear-gradient': prefixLinearGradient,\r\n '-webkit-linear-gradient': prefixLinearGradient,\r\n 'radial-gradient': radialGradient,\r\n '-moz-radial-gradient': prefixRadialGradient,\r\n '-ms-radial-gradient': prefixRadialGradient,\r\n '-o-radial-gradient': prefixRadialGradient,\r\n '-webkit-radial-gradient': prefixRadialGradient,\r\n '-webkit-gradient': webkitGradient\r\n };\n\n var backgroundImage = {\r\n name: 'background-image',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var first = tokens[0];\r\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\r\n return [];\r\n }\r\n return tokens.filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(image.parse);\r\n }\r\n };\n\n var backgroundOrigin = {\r\n name: 'background-origin',\r\n initialValue: 'border-box',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens.map(function (token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case 'padding-box':\r\n return 1 /* PADDING_BOX */;\r\n case 'content-box':\r\n return 2 /* CONTENT_BOX */;\r\n }\r\n }\r\n return 0 /* BORDER_BOX */;\r\n });\r\n }\r\n };\n\n var backgroundPosition = {\r\n name: 'background-position',\r\n initialValue: '0% 0%',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n return parseFunctionArgs(tokens)\r\n .map(function (values) { return values.filter(isLengthPercentage); })\r\n .map(parseLengthPercentageTuple);\r\n }\r\n };\n\n var BACKGROUND_REPEAT;\r\n (function (BACKGROUND_REPEAT) {\r\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT\"] = 0] = \"REPEAT\";\r\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"NO_REPEAT\"] = 1] = \"NO_REPEAT\";\r\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_X\"] = 2] = \"REPEAT_X\";\r\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_Y\"] = 3] = \"REPEAT_Y\";\r\n })(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));\r\n var backgroundRepeat = {\r\n name: 'background-repeat',\r\n initialValue: 'repeat',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return parseFunctionArgs(tokens)\r\n .map(function (values) {\r\n return values\r\n .filter(isIdentToken)\r\n .map(function (token) { return token.value; })\r\n .join(' ');\r\n })\r\n .map(parseBackgroundRepeat);\r\n }\r\n };\r\n var parseBackgroundRepeat = function (value) {\r\n switch (value) {\r\n case 'no-repeat':\r\n return BACKGROUND_REPEAT.NO_REPEAT;\r\n case 'repeat-x':\r\n case 'repeat no-repeat':\r\n return BACKGROUND_REPEAT.REPEAT_X;\r\n case 'repeat-y':\r\n case 'no-repeat repeat':\r\n return BACKGROUND_REPEAT.REPEAT_Y;\r\n case 'repeat':\r\n default:\r\n return BACKGROUND_REPEAT.REPEAT;\r\n }\r\n };\n\n var BACKGROUND_SIZE;\r\n (function (BACKGROUND_SIZE) {\r\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\r\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\r\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\r\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\r\n var backgroundSize = {\r\n name: 'background-size',\r\n initialValue: '0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\r\n }\r\n };\r\n var isBackgroundSizeInfoToken = function (value) {\r\n return isIdentToken(value) || isLengthPercentage(value);\r\n };\n\n var borderColorForSide = function (side) { return ({\r\n name: \"border-\" + side + \"-color\",\r\n initialValue: 'transparent',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'color'\r\n }); };\r\n var borderTopColor = borderColorForSide('top');\r\n var borderRightColor = borderColorForSide('right');\r\n var borderBottomColor = borderColorForSide('bottom');\r\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function (side) { return ({\r\n name: \"border-radius-\" + side,\r\n initialValue: '0 0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) { return parseLengthPercentageTuple(tokens.filter(isLengthPercentage)); }\r\n }); };\r\n var borderTopLeftRadius = borderRadiusForSide('top-left');\r\n var borderTopRightRadius = borderRadiusForSide('top-right');\r\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\r\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n var BORDER_STYLE;\r\n (function (BORDER_STYLE) {\r\n BORDER_STYLE[BORDER_STYLE[\"NONE\"] = 0] = \"NONE\";\r\n BORDER_STYLE[BORDER_STYLE[\"SOLID\"] = 1] = \"SOLID\";\r\n })(BORDER_STYLE || (BORDER_STYLE = {}));\r\n var borderStyleForSide = function (side) { return ({\r\n name: \"border-\" + side + \"-style\",\r\n initialValue: 'solid',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (style) {\r\n switch (style) {\r\n case 'none':\r\n return BORDER_STYLE.NONE;\r\n }\r\n return BORDER_STYLE.SOLID;\r\n }\r\n }); };\r\n var borderTopStyle = borderStyleForSide('top');\r\n var borderRightStyle = borderStyleForSide('right');\r\n var borderBottomStyle = borderStyleForSide('bottom');\r\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function (side) { return ({\r\n name: \"border-\" + side + \"-width\",\r\n initialValue: '0',\r\n type: PropertyDescriptorParsingType.VALUE,\r\n prefix: false,\r\n parse: function (token) {\r\n if (isDimensionToken(token)) {\r\n return token.number;\r\n }\r\n return 0;\r\n }\r\n }); };\r\n var borderTopWidth = borderWidthForSide('top');\r\n var borderRightWidth = borderWidthForSide('right');\r\n var borderBottomWidth = borderWidthForSide('bottom');\r\n var borderLeftWidth = borderWidthForSide('left');\n\n var color$1 = {\r\n name: \"color\",\r\n initialValue: 'transparent',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'color'\r\n };\n\n var display = {\r\n name: 'display',\r\n initialValue: 'inline-block',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\r\n return bit | parseDisplayValue(token.value);\r\n }, 0 /* NONE */);\r\n }\r\n };\r\n var parseDisplayValue = function (display) {\r\n switch (display) {\r\n case 'block':\r\n return 2 /* BLOCK */;\r\n case 'inline':\r\n return 4 /* INLINE */;\r\n case 'run-in':\r\n return 8 /* RUN_IN */;\r\n case 'flow':\r\n return 16 /* FLOW */;\r\n case 'flow-root':\r\n return 32 /* FLOW_ROOT */;\r\n case 'table':\r\n return 64 /* TABLE */;\r\n case 'flex':\r\n case '-webkit-flex':\r\n return 128 /* FLEX */;\r\n case 'grid':\r\n case '-ms-grid':\r\n return 256 /* GRID */;\r\n case 'ruby':\r\n return 512 /* RUBY */;\r\n case 'subgrid':\r\n return 1024 /* SUBGRID */;\r\n case 'list-item':\r\n return 2048 /* LIST_ITEM */;\r\n case 'table-row-group':\r\n return 4096 /* TABLE_ROW_GROUP */;\r\n case 'table-header-group':\r\n return 8192 /* TABLE_HEADER_GROUP */;\r\n case 'table-footer-group':\r\n return 16384 /* TABLE_FOOTER_GROUP */;\r\n case 'table-row':\r\n return 32768 /* TABLE_ROW */;\r\n case 'table-cell':\r\n return 65536 /* TABLE_CELL */;\r\n case 'table-column-group':\r\n return 131072 /* TABLE_COLUMN_GROUP */;\r\n case 'table-column':\r\n return 262144 /* TABLE_COLUMN */;\r\n case 'table-caption':\r\n return 524288 /* TABLE_CAPTION */;\r\n case 'ruby-base':\r\n return 1048576 /* RUBY_BASE */;\r\n case 'ruby-text':\r\n return 2097152 /* RUBY_TEXT */;\r\n case 'ruby-base-container':\r\n return 4194304 /* RUBY_BASE_CONTAINER */;\r\n case 'ruby-text-container':\r\n return 8388608 /* RUBY_TEXT_CONTAINER */;\r\n case 'contents':\r\n return 16777216 /* CONTENTS */;\r\n case 'inline-block':\r\n return 33554432 /* INLINE_BLOCK */;\r\n case 'inline-list-item':\r\n return 67108864 /* INLINE_LIST_ITEM */;\r\n case 'inline-table':\r\n return 134217728 /* INLINE_TABLE */;\r\n case 'inline-flex':\r\n return 268435456 /* INLINE_FLEX */;\r\n case 'inline-grid':\r\n return 536870912 /* INLINE_GRID */;\r\n }\r\n return 0 /* NONE */;\r\n };\n\n var FLOAT;\r\n (function (FLOAT) {\r\n FLOAT[FLOAT[\"NONE\"] = 0] = \"NONE\";\r\n FLOAT[FLOAT[\"LEFT\"] = 1] = \"LEFT\";\r\n FLOAT[FLOAT[\"RIGHT\"] = 2] = \"RIGHT\";\r\n FLOAT[FLOAT[\"INLINE_START\"] = 3] = \"INLINE_START\";\r\n FLOAT[FLOAT[\"INLINE_END\"] = 4] = \"INLINE_END\";\r\n })(FLOAT || (FLOAT = {}));\r\n var float = {\r\n name: 'float',\r\n initialValue: 'none',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (float) {\r\n switch (float) {\r\n case 'left':\r\n return FLOAT.LEFT;\r\n case 'right':\r\n return FLOAT.RIGHT;\r\n case 'inline-start':\r\n return FLOAT.INLINE_START;\r\n case 'inline-end':\r\n return FLOAT.INLINE_END;\r\n }\r\n return FLOAT.NONE;\r\n }\r\n };\n\n var letterSpacing = {\r\n name: 'letter-spacing',\r\n initialValue: '0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.VALUE,\r\n parse: function (token) {\r\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\r\n return 0;\r\n }\r\n if (token.type === TokenType.NUMBER_TOKEN) {\r\n return token.number;\r\n }\r\n if (token.type === TokenType.DIMENSION_TOKEN) {\r\n return token.number;\r\n }\r\n return 0;\r\n }\r\n };\n\n var LINE_BREAK;\r\n (function (LINE_BREAK) {\r\n LINE_BREAK[\"NORMAL\"] = \"normal\";\r\n LINE_BREAK[\"STRICT\"] = \"strict\";\r\n })(LINE_BREAK || (LINE_BREAK = {}));\r\n var lineBreak = {\r\n name: 'line-break',\r\n initialValue: 'normal',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (lineBreak) {\r\n switch (lineBreak) {\r\n case 'strict':\r\n return LINE_BREAK.STRICT;\r\n case 'normal':\r\n default:\r\n return LINE_BREAK.NORMAL;\r\n }\r\n }\r\n };\n\n var lineHeight = {\r\n name: 'line-height',\r\n initialValue: 'normal',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TOKEN_VALUE\r\n };\r\n var computeLineHeight = function (token, fontSize) {\r\n if (isIdentToken(token) && token.value === 'normal') {\r\n return 1.2 * fontSize;\r\n }\r\n else if (token.type === TokenType.NUMBER_TOKEN) {\r\n return fontSize * token.number;\r\n }\r\n else if (isLengthPercentage(token)) {\r\n return getAbsoluteValue(token, fontSize);\r\n }\r\n return fontSize;\r\n };\n\n var listStyleImage = {\r\n name: 'list-style-image',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.VALUE,\r\n prefix: false,\r\n parse: function (token) {\r\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\r\n return null;\r\n }\r\n return image.parse(token);\r\n }\r\n };\n\n var LIST_STYLE_POSITION;\r\n (function (LIST_STYLE_POSITION) {\r\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"INSIDE\"] = 0] = \"INSIDE\";\r\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"OUTSIDE\"] = 1] = \"OUTSIDE\";\r\n })(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));\r\n var listStylePosition = {\r\n name: 'list-style-position',\r\n initialValue: 'outside',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (position) {\r\n switch (position) {\r\n case 'inside':\r\n return LIST_STYLE_POSITION.INSIDE;\r\n case 'outside':\r\n default:\r\n return LIST_STYLE_POSITION.OUTSIDE;\r\n }\r\n }\r\n };\n\n var LIST_STYLE_TYPE;\r\n (function (LIST_STYLE_TYPE) {\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"NONE\"] = -1] = \"NONE\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISC\"] = 0] = \"DISC\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CIRCLE\"] = 1] = \"CIRCLE\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SQUARE\"] = 2] = \"SQUARE\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL\"] = 3] = \"DECIMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_DECIMAL\"] = 4] = \"CJK_DECIMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL_LEADING_ZERO\"] = 5] = \"DECIMAL_LEADING_ZERO\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ROMAN\"] = 6] = \"LOWER_ROMAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ROMAN\"] = 7] = \"UPPER_ROMAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_GREEK\"] = 8] = \"LOWER_GREEK\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ALPHA\"] = 9] = \"LOWER_ALPHA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ALPHA\"] = 10] = \"UPPER_ALPHA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARABIC_INDIC\"] = 11] = \"ARABIC_INDIC\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARMENIAN\"] = 12] = \"ARMENIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"BENGALI\"] = 13] = \"BENGALI\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CAMBODIAN\"] = 14] = \"CAMBODIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_EARTHLY_BRANCH\"] = 15] = \"CJK_EARTHLY_BRANCH\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_HEAVENLY_STEM\"] = 16] = \"CJK_HEAVENLY_STEM\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_IDEOGRAPHIC\"] = 17] = \"CJK_IDEOGRAPHIC\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DEVANAGARI\"] = 18] = \"DEVANAGARI\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ETHIOPIC_NUMERIC\"] = 19] = \"ETHIOPIC_NUMERIC\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GEORGIAN\"] = 20] = \"GEORGIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GUJARATI\"] = 21] = \"GUJARATI\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GURMUKHI\"] = 22] = \"GURMUKHI\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HEBREW\"] = 22] = \"HEBREW\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA\"] = 23] = \"HIRAGANA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA_IROHA\"] = 24] = \"HIRAGANA_IROHA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_FORMAL\"] = 25] = \"JAPANESE_FORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_INFORMAL\"] = 26] = \"JAPANESE_INFORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KANNADA\"] = 27] = \"KANNADA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA\"] = 28] = \"KATAKANA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA_IROHA\"] = 29] = \"KATAKANA_IROHA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KHMER\"] = 30] = \"KHMER\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANGUL_FORMAL\"] = 31] = \"KOREAN_HANGUL_FORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_FORMAL\"] = 32] = \"KOREAN_HANJA_FORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_INFORMAL\"] = 33] = \"KOREAN_HANJA_INFORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LAO\"] = 34] = \"LAO\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ARMENIAN\"] = 35] = \"LOWER_ARMENIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MALAYALAM\"] = 36] = \"MALAYALAM\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MONGOLIAN\"] = 37] = \"MONGOLIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MYANMAR\"] = 38] = \"MYANMAR\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ORIYA\"] = 39] = \"ORIYA\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"PERSIAN\"] = 40] = \"PERSIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_FORMAL\"] = 41] = \"SIMP_CHINESE_FORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_INFORMAL\"] = 42] = \"SIMP_CHINESE_INFORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TAMIL\"] = 43] = \"TAMIL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TELUGU\"] = 44] = \"TELUGU\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"THAI\"] = 45] = \"THAI\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TIBETAN\"] = 46] = \"TIBETAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_FORMAL\"] = 47] = \"TRAD_CHINESE_FORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_INFORMAL\"] = 48] = \"TRAD_CHINESE_INFORMAL\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ARMENIAN\"] = 49] = \"UPPER_ARMENIAN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_OPEN\"] = 50] = \"DISCLOSURE_OPEN\";\r\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_CLOSED\"] = 51] = \"DISCLOSURE_CLOSED\";\r\n })(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));\r\n var listStyleType = {\r\n name: 'list-style-type',\r\n initialValue: 'none',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (type) {\r\n switch (type) {\r\n case 'disc':\r\n return LIST_STYLE_TYPE.DISC;\r\n case 'circle':\r\n return LIST_STYLE_TYPE.CIRCLE;\r\n case 'square':\r\n return LIST_STYLE_TYPE.SQUARE;\r\n case 'decimal':\r\n return LIST_STYLE_TYPE.DECIMAL;\r\n case 'cjk-decimal':\r\n return LIST_STYLE_TYPE.CJK_DECIMAL;\r\n case 'decimal-leading-zero':\r\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\r\n case 'lower-roman':\r\n return LIST_STYLE_TYPE.LOWER_ROMAN;\r\n case 'upper-roman':\r\n return LIST_STYLE_TYPE.UPPER_ROMAN;\r\n case 'lower-greek':\r\n return LIST_STYLE_TYPE.LOWER_GREEK;\r\n case 'lower-alpha':\r\n return LIST_STYLE_TYPE.LOWER_ALPHA;\r\n case 'upper-alpha':\r\n return LIST_STYLE_TYPE.UPPER_ALPHA;\r\n case 'arabic-indic':\r\n return LIST_STYLE_TYPE.ARABIC_INDIC;\r\n case 'armenian':\r\n return LIST_STYLE_TYPE.ARMENIAN;\r\n case 'bengali':\r\n return LIST_STYLE_TYPE.BENGALI;\r\n case 'cambodian':\r\n return LIST_STYLE_TYPE.CAMBODIAN;\r\n case 'cjk-earthly-branch':\r\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\r\n case 'cjk-heavenly-stem':\r\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\r\n case 'cjk-ideographic':\r\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\r\n case 'devanagari':\r\n return LIST_STYLE_TYPE.DEVANAGARI;\r\n case 'ethiopic-numeric':\r\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\r\n case 'georgian':\r\n return LIST_STYLE_TYPE.GEORGIAN;\r\n case 'gujarati':\r\n return LIST_STYLE_TYPE.GUJARATI;\r\n case 'gurmukhi':\r\n return LIST_STYLE_TYPE.GURMUKHI;\r\n case 'hebrew':\r\n return LIST_STYLE_TYPE.HEBREW;\r\n case 'hiragana':\r\n return LIST_STYLE_TYPE.HIRAGANA;\r\n case 'hiragana-iroha':\r\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\r\n case 'japanese-formal':\r\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\r\n case 'japanese-informal':\r\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\r\n case 'kannada':\r\n return LIST_STYLE_TYPE.KANNADA;\r\n case 'katakana':\r\n return LIST_STYLE_TYPE.KATAKANA;\r\n case 'katakana-iroha':\r\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\r\n case 'khmer':\r\n return LIST_STYLE_TYPE.KHMER;\r\n case 'korean-hangul-formal':\r\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\r\n case 'korean-hanja-formal':\r\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\r\n case 'korean-hanja-informal':\r\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\r\n case 'lao':\r\n return LIST_STYLE_TYPE.LAO;\r\n case 'lower-armenian':\r\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\r\n case 'malayalam':\r\n return LIST_STYLE_TYPE.MALAYALAM;\r\n case 'mongolian':\r\n return LIST_STYLE_TYPE.MONGOLIAN;\r\n case 'myanmar':\r\n return LIST_STYLE_TYPE.MYANMAR;\r\n case 'oriya':\r\n return LIST_STYLE_TYPE.ORIYA;\r\n case 'persian':\r\n return LIST_STYLE_TYPE.PERSIAN;\r\n case 'simp-chinese-formal':\r\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\r\n case 'simp-chinese-informal':\r\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\r\n case 'tamil':\r\n return LIST_STYLE_TYPE.TAMIL;\r\n case 'telugu':\r\n return LIST_STYLE_TYPE.TELUGU;\r\n case 'thai':\r\n return LIST_STYLE_TYPE.THAI;\r\n case 'tibetan':\r\n return LIST_STYLE_TYPE.TIBETAN;\r\n case 'trad-chinese-formal':\r\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\r\n case 'trad-chinese-informal':\r\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\r\n case 'upper-armenian':\r\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\r\n case 'disclosure-open':\r\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\r\n case 'disclosure-closed':\r\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\r\n case 'none':\r\n default:\r\n return LIST_STYLE_TYPE.NONE;\r\n }\r\n }\r\n };\n\n var marginForSide = function (side) { return ({\r\n name: \"margin-\" + side,\r\n initialValue: '0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TOKEN_VALUE\r\n }); };\r\n var marginTop = marginForSide('top');\r\n var marginRight = marginForSide('right');\r\n var marginBottom = marginForSide('bottom');\r\n var marginLeft = marginForSide('left');\n\n var OVERFLOW;\r\n (function (OVERFLOW) {\r\n OVERFLOW[OVERFLOW[\"VISIBLE\"] = 0] = \"VISIBLE\";\r\n OVERFLOW[OVERFLOW[\"HIDDEN\"] = 1] = \"HIDDEN\";\r\n OVERFLOW[OVERFLOW[\"SCROLL\"] = 2] = \"SCROLL\";\r\n OVERFLOW[OVERFLOW[\"AUTO\"] = 3] = \"AUTO\";\r\n })(OVERFLOW || (OVERFLOW = {}));\r\n var overflow = {\r\n name: 'overflow',\r\n initialValue: 'visible',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens.filter(isIdentToken).map(function (overflow) {\r\n switch (overflow.value) {\r\n case 'hidden':\r\n return OVERFLOW.HIDDEN;\r\n case 'scroll':\r\n return OVERFLOW.SCROLL;\r\n case 'auto':\r\n return OVERFLOW.AUTO;\r\n case 'visible':\r\n default:\r\n return OVERFLOW.VISIBLE;\r\n }\r\n });\r\n }\r\n };\n\n var OVERFLOW_WRAP;\r\n (function (OVERFLOW_WRAP) {\r\n OVERFLOW_WRAP[\"NORMAL\"] = \"normal\";\r\n OVERFLOW_WRAP[\"BREAK_WORD\"] = \"break-word\";\r\n })(OVERFLOW_WRAP || (OVERFLOW_WRAP = {}));\r\n var overflowWrap = {\r\n name: 'overflow-wrap',\r\n initialValue: 'normal',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (overflow) {\r\n switch (overflow) {\r\n case 'break-word':\r\n return OVERFLOW_WRAP.BREAK_WORD;\r\n case 'normal':\r\n default:\r\n return OVERFLOW_WRAP.NORMAL;\r\n }\r\n }\r\n };\n\n var paddingForSide = function (side) { return ({\r\n name: \"padding-\" + side,\r\n initialValue: '0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'length-percentage'\r\n }); };\r\n var paddingTop = paddingForSide('top');\r\n var paddingRight = paddingForSide('right');\r\n var paddingBottom = paddingForSide('bottom');\r\n var paddingLeft = paddingForSide('left');\n\n var TEXT_ALIGN;\r\n (function (TEXT_ALIGN) {\r\n TEXT_ALIGN[TEXT_ALIGN[\"LEFT\"] = 0] = \"LEFT\";\r\n TEXT_ALIGN[TEXT_ALIGN[\"CENTER\"] = 1] = \"CENTER\";\r\n TEXT_ALIGN[TEXT_ALIGN[\"RIGHT\"] = 2] = \"RIGHT\";\r\n })(TEXT_ALIGN || (TEXT_ALIGN = {}));\r\n var textAlign = {\r\n name: 'text-align',\r\n initialValue: 'left',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (textAlign) {\r\n switch (textAlign) {\r\n case 'right':\r\n return TEXT_ALIGN.RIGHT;\r\n case 'center':\r\n case 'justify':\r\n return TEXT_ALIGN.CENTER;\r\n case 'left':\r\n default:\r\n return TEXT_ALIGN.LEFT;\r\n }\r\n }\r\n };\n\n var POSITION;\r\n (function (POSITION) {\r\n POSITION[POSITION[\"STATIC\"] = 0] = \"STATIC\";\r\n POSITION[POSITION[\"RELATIVE\"] = 1] = \"RELATIVE\";\r\n POSITION[POSITION[\"ABSOLUTE\"] = 2] = \"ABSOLUTE\";\r\n POSITION[POSITION[\"FIXED\"] = 3] = \"FIXED\";\r\n POSITION[POSITION[\"STICKY\"] = 4] = \"STICKY\";\r\n })(POSITION || (POSITION = {}));\r\n var position = {\r\n name: 'position',\r\n initialValue: 'static',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (position) {\r\n switch (position) {\r\n case 'relative':\r\n return POSITION.RELATIVE;\r\n case 'absolute':\r\n return POSITION.ABSOLUTE;\r\n case 'fixed':\r\n return POSITION.FIXED;\r\n case 'sticky':\r\n return POSITION.STICKY;\r\n }\r\n return POSITION.STATIC;\r\n }\r\n };\n\n var textShadow = {\r\n name: 'text-shadow',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\r\n return [];\r\n }\r\n return parseFunctionArgs(tokens).map(function (values) {\r\n var shadow = {\r\n color: COLORS.TRANSPARENT,\r\n offsetX: ZERO_LENGTH,\r\n offsetY: ZERO_LENGTH,\r\n blur: ZERO_LENGTH\r\n };\r\n var c = 0;\r\n for (var i = 0; i < values.length; i++) {\r\n var token = values[i];\r\n if (isLength(token)) {\r\n if (c === 0) {\r\n shadow.offsetX = token;\r\n }\r\n else if (c === 1) {\r\n shadow.offsetY = token;\r\n }\r\n else {\r\n shadow.blur = token;\r\n }\r\n c++;\r\n }\r\n else {\r\n shadow.color = color.parse(token);\r\n }\r\n }\r\n return shadow;\r\n });\r\n }\r\n };\n\n var TEXT_TRANSFORM;\r\n (function (TEXT_TRANSFORM) {\r\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"NONE\"] = 0] = \"NONE\";\r\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"LOWERCASE\"] = 1] = \"LOWERCASE\";\r\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"UPPERCASE\"] = 2] = \"UPPERCASE\";\r\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"CAPITALIZE\"] = 3] = \"CAPITALIZE\";\r\n })(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));\r\n var textTransform = {\r\n name: 'text-transform',\r\n initialValue: 'none',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (textTransform) {\r\n switch (textTransform) {\r\n case 'uppercase':\r\n return TEXT_TRANSFORM.UPPERCASE;\r\n case 'lowercase':\r\n return TEXT_TRANSFORM.LOWERCASE;\r\n case 'capitalize':\r\n return TEXT_TRANSFORM.CAPITALIZE;\r\n }\r\n return TEXT_TRANSFORM.NONE;\r\n }\r\n };\n\n var transform = {\r\n name: 'transform',\r\n initialValue: 'none',\r\n prefix: true,\r\n type: PropertyDescriptorParsingType.VALUE,\r\n parse: function (token) {\r\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\r\n return null;\r\n }\r\n if (token.type === TokenType.FUNCTION) {\r\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\r\n if (typeof transformFunction === 'undefined') {\r\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\r\n }\r\n return transformFunction(token.values);\r\n }\r\n return null;\r\n }\r\n };\r\n var matrix = function (args) {\r\n var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });\r\n return values.length === 6 ? values : null;\r\n };\r\n // doesn't support 3D transforms at the moment\r\n var matrix3d = function (args) {\r\n var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });\r\n var a1 = values[0], b1 = values[1], _a = values[2], _b = values[3], a2 = values[4], b2 = values[5], _c = values[6], _d = values[7], _e = values[8], _f = values[9], _g = values[10], _h = values[11], a4 = values[12], b4 = values[13], _j = values[14], _k = values[15];\r\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\r\n };\r\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\r\n matrix: matrix,\r\n matrix3d: matrix3d\r\n };\n\n var DEFAULT_VALUE = {\r\n type: TokenType.PERCENTAGE_TOKEN,\r\n number: 50,\r\n flags: FLAG_INTEGER\r\n };\r\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\r\n var transformOrigin = {\r\n name: 'transform-origin',\r\n initialValue: '50% 50%',\r\n prefix: true,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n var origins = tokens.filter(isLengthPercentage);\r\n if (origins.length !== 2) {\r\n return DEFAULT;\r\n }\r\n return [origins[0], origins[1]];\r\n }\r\n };\n\n var VISIBILITY;\r\n (function (VISIBILITY) {\r\n VISIBILITY[VISIBILITY[\"VISIBLE\"] = 0] = \"VISIBLE\";\r\n VISIBILITY[VISIBILITY[\"HIDDEN\"] = 1] = \"HIDDEN\";\r\n VISIBILITY[VISIBILITY[\"COLLAPSE\"] = 2] = \"COLLAPSE\";\r\n })(VISIBILITY || (VISIBILITY = {}));\r\n var visibility = {\r\n name: 'visible',\r\n initialValue: 'none',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (visibility) {\r\n switch (visibility) {\r\n case 'hidden':\r\n return VISIBILITY.HIDDEN;\r\n case 'collapse':\r\n return VISIBILITY.COLLAPSE;\r\n case 'visible':\r\n default:\r\n return VISIBILITY.VISIBLE;\r\n }\r\n }\r\n };\n\n var WORD_BREAK;\r\n (function (WORD_BREAK) {\r\n WORD_BREAK[\"NORMAL\"] = \"normal\";\r\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\r\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\r\n })(WORD_BREAK || (WORD_BREAK = {}));\r\n var wordBreak = {\r\n name: 'word-break',\r\n initialValue: 'normal',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (wordBreak) {\r\n switch (wordBreak) {\r\n case 'break-all':\r\n return WORD_BREAK.BREAK_ALL;\r\n case 'keep-all':\r\n return WORD_BREAK.KEEP_ALL;\r\n case 'normal':\r\n default:\r\n return WORD_BREAK.NORMAL;\r\n }\r\n }\r\n };\n\n var zIndex = {\r\n name: 'z-index',\r\n initialValue: 'auto',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.VALUE,\r\n parse: function (token) {\r\n if (token.type === TokenType.IDENT_TOKEN) {\r\n return { auto: true, order: 0 };\r\n }\r\n if (isNumberToken(token)) {\r\n return { auto: false, order: token.number };\r\n }\r\n throw new Error(\"Invalid z-index number parsed\");\r\n }\r\n };\n\n var opacity = {\r\n name: 'opacity',\r\n initialValue: '1',\r\n type: PropertyDescriptorParsingType.VALUE,\r\n prefix: false,\r\n parse: function (token) {\r\n if (isNumberToken(token)) {\r\n return token.number;\r\n }\r\n return 1;\r\n }\r\n };\n\n var textDecorationColor = {\r\n name: \"text-decoration-color\",\r\n initialValue: 'transparent',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'color'\r\n };\n\n var textDecorationLine = {\r\n name: 'text-decoration-line',\r\n initialValue: 'none',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens\r\n .filter(isIdentToken)\r\n .map(function (token) {\r\n switch (token.value) {\r\n case 'underline':\r\n return 1 /* UNDERLINE */;\r\n case 'overline':\r\n return 2 /* OVERLINE */;\r\n case 'line-through':\r\n return 3 /* LINE_THROUGH */;\r\n case 'none':\r\n return 4 /* BLINK */;\r\n }\r\n return 0 /* NONE */;\r\n })\r\n .filter(function (line) { return line !== 0 /* NONE */; });\r\n }\r\n };\n\n var fontFamily = {\r\n name: \"font-family\",\r\n initialValue: '',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n return tokens.filter(isStringToken$1).map(function (token) { return token.value; });\r\n }\r\n };\r\n var isStringToken$1 = function (token) {\r\n return token.type === TokenType.STRING_TOKEN || token.type === TokenType.IDENT_TOKEN;\r\n };\n\n var fontSize = {\r\n name: \"font-size\",\r\n initialValue: '0',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.TYPE_VALUE,\r\n format: 'length'\r\n };\n\n var fontWeight = {\r\n name: 'font-weight',\r\n initialValue: 'normal',\r\n type: PropertyDescriptorParsingType.VALUE,\r\n prefix: false,\r\n parse: function (token) {\r\n if (isNumberToken(token)) {\r\n return token.number;\r\n }\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case 'bold':\r\n return 700;\r\n case 'normal':\r\n default:\r\n return 400;\r\n }\r\n }\r\n return 400;\r\n }\r\n };\n\n var fontVariant = {\r\n name: 'font-variant',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n return tokens.filter(isIdentToken).map(function (token) { return token.value; });\r\n }\r\n };\n\n var FONT_STYLE;\r\n (function (FONT_STYLE) {\r\n FONT_STYLE[\"NORMAL\"] = \"normal\";\r\n FONT_STYLE[\"ITALIC\"] = \"italic\";\r\n FONT_STYLE[\"OBLIQUE\"] = \"oblique\";\r\n })(FONT_STYLE || (FONT_STYLE = {}));\r\n var fontStyle = {\r\n name: 'font-style',\r\n initialValue: 'normal',\r\n prefix: false,\r\n type: PropertyDescriptorParsingType.IDENT_VALUE,\r\n parse: function (overflow) {\r\n switch (overflow) {\r\n case 'oblique':\r\n return FONT_STYLE.OBLIQUE;\r\n case 'italic':\r\n return FONT_STYLE.ITALIC;\r\n case 'normal':\r\n default:\r\n return FONT_STYLE.NORMAL;\r\n }\r\n }\r\n };\n\n var contains = function (bit, value) { return (bit & value) !== 0; };\n\n var content = {\r\n name: 'content',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var first = tokens[0];\r\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\r\n return [];\r\n }\r\n return tokens;\r\n }\r\n };\n\n var counterIncrement = {\r\n name: 'counter-increment',\r\n initialValue: 'none',\r\n prefix: true,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var first = tokens[0];\r\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\r\n return null;\r\n }\r\n var increments = [];\r\n var filtered = tokens.filter(nonWhiteSpace);\r\n for (var i = 0; i < filtered.length; i++) {\r\n var counter = filtered[i];\r\n var next = filtered[i + 1];\r\n if (counter.type === TokenType.IDENT_TOKEN) {\r\n var increment = next && isNumberToken(next) ? next.number : 1;\r\n increments.push({ counter: counter.value, increment: increment });\r\n }\r\n }\r\n return increments;\r\n }\r\n };\n\n var counterReset = {\r\n name: 'counter-reset',\r\n initialValue: 'none',\r\n prefix: true,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var resets = [];\r\n var filtered = tokens.filter(nonWhiteSpace);\r\n for (var i = 0; i < filtered.length; i++) {\r\n var counter = filtered[i];\r\n var next = filtered[i + 1];\r\n if (isIdentToken(counter) && counter.value !== 'none') {\r\n var reset = next && isNumberToken(next) ? next.number : 0;\r\n resets.push({ counter: counter.value, reset: reset });\r\n }\r\n }\r\n return resets;\r\n }\r\n };\n\n var quotes = {\r\n name: 'quotes',\r\n initialValue: 'none',\r\n prefix: true,\r\n type: PropertyDescriptorParsingType.LIST,\r\n parse: function (tokens) {\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var first = tokens[0];\r\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\r\n return null;\r\n }\r\n var quotes = [];\r\n var filtered = tokens.filter(isStringToken);\r\n if (filtered.length % 2 !== 0) {\r\n return null;\r\n }\r\n for (var i = 0; i < filtered.length; i += 2) {\r\n var open_1 = filtered[i].value;\r\n var close_1 = filtered[i + 1].value;\r\n quotes.push({ open: open_1, close: close_1 });\r\n }\r\n return quotes;\r\n }\r\n };\r\n var getQuote = function (quotes, depth, open) {\r\n if (!quotes) {\r\n return '';\r\n }\r\n var quote = quotes[Math.min(depth, quotes.length - 1)];\r\n if (!quote) {\r\n return '';\r\n }\r\n return open ? quote.open : quote.close;\r\n };\n\n var boxShadow = {\r\n name: 'box-shadow',\r\n initialValue: 'none',\r\n type: PropertyDescriptorParsingType.LIST,\r\n prefix: false,\r\n parse: function (tokens) {\r\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\r\n return [];\r\n }\r\n return parseFunctionArgs(tokens).map(function (values) {\r\n var shadow = {\r\n color: 0x000000ff,\r\n offsetX: ZERO_LENGTH,\r\n offsetY: ZERO_LENGTH,\r\n blur: ZERO_LENGTH,\r\n spread: ZERO_LENGTH,\r\n inset: false\r\n };\r\n var c = 0;\r\n for (var i = 0; i < values.length; i++) {\r\n var token = values[i];\r\n if (isIdentWithValue(token, 'inset')) {\r\n shadow.inset = true;\r\n }\r\n else if (isLength(token)) {\r\n if (c === 0) {\r\n shadow.offsetX = token;\r\n }\r\n else if (c === 1) {\r\n shadow.offsetY = token;\r\n }\r\n else if (c === 2) {\r\n shadow.blur = token;\r\n }\r\n else {\r\n shadow.spread = token;\r\n }\r\n c++;\r\n }\r\n else {\r\n shadow.color = color.parse(token);\r\n }\r\n }\r\n return shadow;\r\n });\r\n }\r\n };\n\n var CSSParsedDeclaration = /** @class */ (function () {\r\n function CSSParsedDeclaration(declaration) {\r\n this.backgroundClip = parse(backgroundClip, declaration.backgroundClip);\r\n this.backgroundColor = parse(backgroundColor, declaration.backgroundColor);\r\n this.backgroundImage = parse(backgroundImage, declaration.backgroundImage);\r\n this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin);\r\n this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition);\r\n this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat);\r\n this.backgroundSize = parse(backgroundSize, declaration.backgroundSize);\r\n this.borderTopColor = parse(borderTopColor, declaration.borderTopColor);\r\n this.borderRightColor = parse(borderRightColor, declaration.borderRightColor);\r\n this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor);\r\n this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor);\r\n this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius);\r\n this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius);\r\n this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius);\r\n this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius);\r\n this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle);\r\n this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle);\r\n this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle);\r\n this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle);\r\n this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth);\r\n this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth);\r\n this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth);\r\n this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth);\r\n this.boxShadow = parse(boxShadow, declaration.boxShadow);\r\n this.color = parse(color$1, declaration.color);\r\n this.display = parse(display, declaration.display);\r\n this.float = parse(float, declaration.cssFloat);\r\n this.fontFamily = parse(fontFamily, declaration.fontFamily);\r\n this.fontSize = parse(fontSize, declaration.fontSize);\r\n this.fontStyle = parse(fontStyle, declaration.fontStyle);\r\n this.fontVariant = parse(fontVariant, declaration.fontVariant);\r\n this.fontWeight = parse(fontWeight, declaration.fontWeight);\r\n this.letterSpacing = parse(letterSpacing, declaration.letterSpacing);\r\n this.lineBreak = parse(lineBreak, declaration.lineBreak);\r\n this.lineHeight = parse(lineHeight, declaration.lineHeight);\r\n this.listStyleImage = parse(listStyleImage, declaration.listStyleImage);\r\n this.listStylePosition = parse(listStylePosition, declaration.listStylePosition);\r\n this.listStyleType = parse(listStyleType, declaration.listStyleType);\r\n this.marginTop = parse(marginTop, declaration.marginTop);\r\n this.marginRight = parse(marginRight, declaration.marginRight);\r\n this.marginBottom = parse(marginBottom, declaration.marginBottom);\r\n this.marginLeft = parse(marginLeft, declaration.marginLeft);\r\n this.opacity = parse(opacity, declaration.opacity);\r\n var overflowTuple = parse(overflow, declaration.overflow);\r\n this.overflowX = overflowTuple[0];\r\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\r\n this.overflowWrap = parse(overflowWrap, declaration.overflowWrap);\r\n this.paddingTop = parse(paddingTop, declaration.paddingTop);\r\n this.paddingRight = parse(paddingRight, declaration.paddingRight);\r\n this.paddingBottom = parse(paddingBottom, declaration.paddingBottom);\r\n this.paddingLeft = parse(paddingLeft, declaration.paddingLeft);\r\n this.position = parse(position, declaration.position);\r\n this.textAlign = parse(textAlign, declaration.textAlign);\r\n this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color);\r\n this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine);\r\n this.textShadow = parse(textShadow, declaration.textShadow);\r\n this.textTransform = parse(textTransform, declaration.textTransform);\r\n this.transform = parse(transform, declaration.transform);\r\n this.transformOrigin = parse(transformOrigin, declaration.transformOrigin);\r\n this.visibility = parse(visibility, declaration.visibility);\r\n this.wordBreak = parse(wordBreak, declaration.wordBreak);\r\n this.zIndex = parse(zIndex, declaration.zIndex);\r\n }\r\n CSSParsedDeclaration.prototype.isVisible = function () {\r\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\r\n };\r\n CSSParsedDeclaration.prototype.isTransparent = function () {\r\n return isTransparent(this.backgroundColor);\r\n };\r\n CSSParsedDeclaration.prototype.isTransformed = function () {\r\n return this.transform !== null;\r\n };\r\n CSSParsedDeclaration.prototype.isPositioned = function () {\r\n return this.position !== POSITION.STATIC;\r\n };\r\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\r\n return this.isPositioned() && !this.zIndex.auto;\r\n };\r\n CSSParsedDeclaration.prototype.isFloating = function () {\r\n return this.float !== FLOAT.NONE;\r\n };\r\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\r\n return (contains(this.display, 4 /* INLINE */) ||\r\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\r\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\r\n contains(this.display, 536870912 /* INLINE_GRID */) ||\r\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\r\n contains(this.display, 134217728 /* INLINE_TABLE */));\r\n };\r\n return CSSParsedDeclaration;\r\n }());\r\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\r\n function CSSParsedPseudoDeclaration(declaration) {\r\n this.content = parse(content, declaration.content);\r\n this.quotes = parse(quotes, declaration.quotes);\r\n }\r\n return CSSParsedPseudoDeclaration;\r\n }());\r\n var CSSParsedCounterDeclaration = /** @class */ (function () {\r\n function CSSParsedCounterDeclaration(declaration) {\r\n this.counterIncrement = parse(counterIncrement, declaration.counterIncrement);\r\n this.counterReset = parse(counterReset, declaration.counterReset);\r\n }\r\n return CSSParsedCounterDeclaration;\r\n }());\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var parse = function (descriptor, style) {\r\n var tokenizer = new Tokenizer();\r\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\r\n tokenizer.write(value);\r\n var parser = new Parser(tokenizer.read());\r\n switch (descriptor.type) {\r\n case PropertyDescriptorParsingType.IDENT_VALUE:\r\n var token = parser.parseComponentValue();\r\n return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue);\r\n case PropertyDescriptorParsingType.VALUE:\r\n return descriptor.parse(parser.parseComponentValue());\r\n case PropertyDescriptorParsingType.LIST:\r\n return descriptor.parse(parser.parseComponentValues());\r\n case PropertyDescriptorParsingType.TOKEN_VALUE:\r\n return parser.parseComponentValue();\r\n case PropertyDescriptorParsingType.TYPE_VALUE:\r\n switch (descriptor.format) {\r\n case 'angle':\r\n return angle.parse(parser.parseComponentValue());\r\n case 'color':\r\n return color.parse(parser.parseComponentValue());\r\n case 'image':\r\n return image.parse(parser.parseComponentValue());\r\n case 'length':\r\n var length_1 = parser.parseComponentValue();\r\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\r\n case 'length-percentage':\r\n var value_1 = parser.parseComponentValue();\r\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\r\n }\r\n }\r\n throw new Error(\"Attempting to parse unsupported css format type \" + descriptor.format);\r\n };\n\n var ElementContainer = /** @class */ (function () {\r\n function ElementContainer(element) {\r\n this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null));\r\n this.textNodes = [];\r\n this.elements = [];\r\n if (this.styles.transform !== null && isHTMLElementNode(element)) {\r\n // getBoundingClientRect takes transforms into account\r\n element.style.transform = 'none';\r\n }\r\n this.bounds = parseBounds(element);\r\n this.flags = 0;\r\n }\r\n return ElementContainer;\r\n }());\n\n var TextBounds = /** @class */ (function () {\r\n function TextBounds(text, bounds) {\r\n this.text = text;\r\n this.bounds = bounds;\r\n }\r\n return TextBounds;\r\n }());\r\n var parseTextBounds = function (value, styles, node) {\r\n var textList = breakText(value, styles);\r\n var textBounds = [];\r\n var offset = 0;\r\n textList.forEach(function (text) {\r\n if (styles.textDecorationLine.length || text.trim().length > 0) {\r\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length)));\r\n }\r\n else {\r\n var replacementNode = node.splitText(text.length);\r\n textBounds.push(new TextBounds(text, getWrapperBounds(node)));\r\n node = replacementNode;\r\n }\r\n }\r\n else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n node = node.splitText(text.length);\r\n }\r\n offset += text.length;\r\n });\r\n return textBounds;\r\n };\r\n var getWrapperBounds = function (node) {\r\n var ownerDocument = node.ownerDocument;\r\n if (ownerDocument) {\r\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\r\n wrapper.appendChild(node.cloneNode(true));\r\n var parentNode = node.parentNode;\r\n if (parentNode) {\r\n parentNode.replaceChild(wrapper, node);\r\n var bounds = parseBounds(wrapper);\r\n if (wrapper.firstChild) {\r\n parentNode.replaceChild(wrapper.firstChild, wrapper);\r\n }\r\n return bounds;\r\n }\r\n }\r\n return new Bounds(0, 0, 0, 0);\r\n };\r\n var getRangeBounds = function (node, offset, length) {\r\n var ownerDocument = node.ownerDocument;\r\n if (!ownerDocument) {\r\n throw new Error('Node has no owner document');\r\n }\r\n var range = ownerDocument.createRange();\r\n range.setStart(node, offset);\r\n range.setEnd(node, offset + length);\r\n return Bounds.fromClientRect(range.getBoundingClientRect());\r\n };\r\n var breakText = function (value, styles) {\r\n return styles.letterSpacing !== 0 ? toCodePoints(value).map(function (i) { return fromCodePoint(i); }) : breakWords(value, styles);\r\n };\r\n var breakWords = function (str, styles) {\r\n var breaker = LineBreaker(str, {\r\n lineBreak: styles.lineBreak,\r\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\r\n });\r\n var words = [];\r\n var bk;\r\n while (!(bk = breaker.next()).done) {\r\n if (bk.value) {\r\n words.push(bk.value.slice());\r\n }\r\n }\r\n return words;\r\n };\n\n var TextContainer = /** @class */ (function () {\r\n function TextContainer(node, styles) {\r\n this.text = transform$1(node.data, styles.textTransform);\r\n this.textBounds = parseTextBounds(this.text, styles, node);\r\n }\r\n return TextContainer;\r\n }());\r\n var transform$1 = function (text, transform) {\r\n switch (transform) {\r\n case TEXT_TRANSFORM.LOWERCASE:\r\n return text.toLowerCase();\r\n case TEXT_TRANSFORM.CAPITALIZE:\r\n return text.replace(CAPITALIZE, capitalize);\r\n case TEXT_TRANSFORM.UPPERCASE:\r\n return text.toUpperCase();\r\n default:\r\n return text;\r\n }\r\n };\r\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\r\n var capitalize = function (m, p1, p2) {\r\n if (m.length > 0) {\r\n return p1 + p2.toUpperCase();\r\n }\r\n return m;\r\n };\n\n var ImageElementContainer = /** @class */ (function (_super) {\r\n __extends(ImageElementContainer, _super);\r\n function ImageElementContainer(img) {\r\n var _this = _super.call(this, img) || this;\r\n _this.src = img.currentSrc || img.src;\r\n _this.intrinsicWidth = img.naturalWidth;\r\n _this.intrinsicHeight = img.naturalHeight;\r\n CacheStorage.getInstance().addImage(_this.src);\r\n return _this;\r\n }\r\n return ImageElementContainer;\r\n }(ElementContainer));\n\n var CanvasElementContainer = /** @class */ (function (_super) {\r\n __extends(CanvasElementContainer, _super);\r\n function CanvasElementContainer(canvas) {\r\n var _this = _super.call(this, canvas) || this;\r\n _this.canvas = canvas;\r\n _this.intrinsicWidth = canvas.width;\r\n _this.intrinsicHeight = canvas.height;\r\n return _this;\r\n }\r\n return CanvasElementContainer;\r\n }(ElementContainer));\n\n var SVGElementContainer = /** @class */ (function (_super) {\r\n __extends(SVGElementContainer, _super);\r\n function SVGElementContainer(img) {\r\n var _this = _super.call(this, img) || this;\r\n var s = new XMLSerializer();\r\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\r\n _this.intrinsicWidth = img.width.baseVal.value;\r\n _this.intrinsicHeight = img.height.baseVal.value;\r\n CacheStorage.getInstance().addImage(_this.svg);\r\n return _this;\r\n }\r\n return SVGElementContainer;\r\n }(ElementContainer));\n\n var LIElementContainer = /** @class */ (function (_super) {\r\n __extends(LIElementContainer, _super);\r\n function LIElementContainer(element) {\r\n var _this = _super.call(this, element) || this;\r\n _this.value = element.value;\r\n return _this;\r\n }\r\n return LIElementContainer;\r\n }(ElementContainer));\n\n var OLElementContainer = /** @class */ (function (_super) {\r\n __extends(OLElementContainer, _super);\r\n function OLElementContainer(element) {\r\n var _this = _super.call(this, element) || this;\r\n _this.start = element.start;\r\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\r\n return _this;\r\n }\r\n return OLElementContainer;\r\n }(ElementContainer));\n\n var CHECKBOX_BORDER_RADIUS = [\r\n {\r\n type: TokenType.DIMENSION_TOKEN,\r\n flags: 0,\r\n unit: 'px',\r\n number: 3\r\n }\r\n ];\r\n var RADIO_BORDER_RADIUS = [\r\n {\r\n type: TokenType.PERCENTAGE_TOKEN,\r\n flags: 0,\r\n number: 50\r\n }\r\n ];\r\n var reformatInputBounds = function (bounds) {\r\n if (bounds.width > bounds.height) {\r\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\r\n }\r\n else if (bounds.width < bounds.height) {\r\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\r\n }\r\n return bounds;\r\n };\r\n var getInputValue = function (node) {\r\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\r\n return value.length === 0 ? node.placeholder || '' : value;\r\n };\r\n var CHECKBOX = 'checkbox';\r\n var RADIO = 'radio';\r\n var PASSWORD = 'password';\r\n var INPUT_COLOR = 0x2a2a2aff;\r\n var InputElementContainer = /** @class */ (function (_super) {\r\n __extends(InputElementContainer, _super);\r\n function InputElementContainer(input) {\r\n var _this = _super.call(this, input) || this;\r\n _this.type = input.type.toLowerCase();\r\n _this.checked = input.checked;\r\n _this.value = getInputValue(input);\r\n if (_this.type === CHECKBOX || _this.type === RADIO) {\r\n _this.styles.backgroundColor = 0xdededeff;\r\n _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;\r\n _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;\r\n _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle =\r\n BORDER_STYLE.SOLID;\r\n _this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\r\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\r\n _this.bounds = reformatInputBounds(_this.bounds);\r\n }\r\n switch (_this.type) {\r\n case CHECKBOX:\r\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;\r\n break;\r\n case RADIO:\r\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;\r\n break;\r\n }\r\n return _this;\r\n }\r\n return InputElementContainer;\r\n }(ElementContainer));\n\n var SelectElementContainer = /** @class */ (function (_super) {\r\n __extends(SelectElementContainer, _super);\r\n function SelectElementContainer(element) {\r\n var _this = _super.call(this, element) || this;\r\n var option = element.options[element.selectedIndex || 0];\r\n _this.value = option ? option.text || '' : '';\r\n return _this;\r\n }\r\n return SelectElementContainer;\r\n }(ElementContainer));\n\n var TextareaElementContainer = /** @class */ (function (_super) {\r\n __extends(TextareaElementContainer, _super);\r\n function TextareaElementContainer(element) {\r\n var _this = _super.call(this, element) || this;\r\n _this.value = element.value;\r\n return _this;\r\n }\r\n return TextareaElementContainer;\r\n }(ElementContainer));\n\n var parseColor = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };\r\n var IFrameElementContainer = /** @class */ (function (_super) {\r\n __extends(IFrameElementContainer, _super);\r\n function IFrameElementContainer(iframe) {\r\n var _this = _super.call(this, iframe) || this;\r\n _this.src = iframe.src;\r\n _this.width = parseInt(iframe.width, 10) || 0;\r\n _this.height = parseInt(iframe.height, 10) || 0;\r\n _this.backgroundColor = _this.styles.backgroundColor;\r\n try {\r\n if (iframe.contentWindow &&\r\n iframe.contentWindow.document &&\r\n iframe.contentWindow.document.documentElement) {\r\n _this.tree = parseTree(iframe.contentWindow.document.documentElement);\r\n // http://www.w3.org/TR/css3-background/#special-backgrounds\r\n var documentBackgroundColor = iframe.contentWindow.document.documentElement\r\n ? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement)\r\n .backgroundColor)\r\n : COLORS.TRANSPARENT;\r\n var bodyBackgroundColor = iframe.contentWindow.document.body\r\n ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\r\n : COLORS.TRANSPARENT;\r\n _this.backgroundColor = isTransparent(documentBackgroundColor)\r\n ? isTransparent(bodyBackgroundColor)\r\n ? _this.styles.backgroundColor\r\n : bodyBackgroundColor\r\n : documentBackgroundColor;\r\n }\r\n }\r\n catch (e) { }\r\n return _this;\r\n }\r\n return IFrameElementContainer;\r\n }(ElementContainer));\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\r\n var parseNodeTree = function (node, parent, root) {\r\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\r\n nextNode = childNode.nextSibling;\r\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\r\n parent.textNodes.push(new TextContainer(childNode, parent.styles));\r\n }\r\n else if (isElementNode(childNode)) {\r\n var container = createContainer(childNode);\r\n if (container.styles.isVisible()) {\r\n if (createsRealStackingContext(childNode, container, root)) {\r\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n }\r\n else if (createsStackingContext(container.styles)) {\r\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\r\n }\r\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\r\n container.flags |= 8 /* IS_LIST_OWNER */;\r\n }\r\n parent.elements.push(container);\r\n if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {\r\n parseNodeTree(childNode, container, root);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var createContainer = function (element) {\r\n if (isImageElement(element)) {\r\n return new ImageElementContainer(element);\r\n }\r\n if (isCanvasElement(element)) {\r\n return new CanvasElementContainer(element);\r\n }\r\n if (isSVGElement(element)) {\r\n return new SVGElementContainer(element);\r\n }\r\n if (isLIElement(element)) {\r\n return new LIElementContainer(element);\r\n }\r\n if (isOLElement(element)) {\r\n return new OLElementContainer(element);\r\n }\r\n if (isInputElement(element)) {\r\n return new InputElementContainer(element);\r\n }\r\n if (isSelectElement(element)) {\r\n return new SelectElementContainer(element);\r\n }\r\n if (isTextareaElement(element)) {\r\n return new TextareaElementContainer(element);\r\n }\r\n if (isIFrameElement(element)) {\r\n return new IFrameElementContainer(element);\r\n }\r\n return new ElementContainer(element);\r\n };\r\n var parseTree = function (element) {\r\n var container = createContainer(element);\r\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n parseNodeTree(element, container, container);\r\n return container;\r\n };\r\n var createsRealStackingContext = function (node, container, root) {\r\n return (container.styles.isPositionedWithZIndex() ||\r\n container.styles.opacity < 1 ||\r\n container.styles.isTransformed() ||\r\n (isBodyElement(node) && root.styles.isTransparent()));\r\n };\r\n var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\r\n var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\r\n var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\r\n var isHTMLElementNode = function (node) {\r\n return typeof node.style !== 'undefined';\r\n };\r\n var isLIElement = function (node) { return node.tagName === 'LI'; };\r\n var isOLElement = function (node) { return node.tagName === 'OL'; };\r\n var isInputElement = function (node) { return node.tagName === 'INPUT'; };\r\n var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\r\n var isSVGElement = function (node) { return node.tagName === 'svg'; };\r\n var isBodyElement = function (node) { return node.tagName === 'BODY'; };\r\n var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\r\n var isImageElement = function (node) { return node.tagName === 'IMG'; };\r\n var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\r\n var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\r\n var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\r\n var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\r\n var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n\n var CounterState = /** @class */ (function () {\r\n function CounterState() {\r\n this.counters = {};\r\n }\r\n CounterState.prototype.getCounterValue = function (name) {\r\n var counter = this.counters[name];\r\n if (counter && counter.length) {\r\n return counter[counter.length - 1];\r\n }\r\n return 1;\r\n };\r\n CounterState.prototype.getCounterValues = function (name) {\r\n var counter = this.counters[name];\r\n return counter ? counter : [];\r\n };\r\n CounterState.prototype.pop = function (counters) {\r\n var _this = this;\r\n counters.forEach(function (counter) { return _this.counters[counter].pop(); });\r\n };\r\n CounterState.prototype.parse = function (style) {\r\n var _this = this;\r\n var counterIncrement = style.counterIncrement;\r\n var counterReset = style.counterReset;\r\n var canReset = true;\r\n if (counterIncrement !== null) {\r\n counterIncrement.forEach(function (entry) {\r\n var counter = _this.counters[entry.counter];\r\n if (counter && entry.increment !== 0) {\r\n canReset = false;\r\n counter[Math.max(0, counter.length - 1)] += entry.increment;\r\n }\r\n });\r\n }\r\n var counterNames = [];\r\n if (canReset) {\r\n counterReset.forEach(function (entry) {\r\n var counter = _this.counters[entry.counter];\r\n counterNames.push(entry.counter);\r\n if (!counter) {\r\n counter = _this.counters[entry.counter] = [];\r\n }\r\n counter.push(entry.reset);\r\n });\r\n }\r\n return counterNames;\r\n };\r\n return CounterState;\r\n }());\r\n var ROMAN_UPPER = {\r\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\r\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\r\n };\r\n var ARMENIAN = {\r\n integers: [\r\n 9000,\r\n 8000,\r\n 7000,\r\n 6000,\r\n 5000,\r\n 4000,\r\n 3000,\r\n 2000,\r\n 1000,\r\n 900,\r\n 800,\r\n 700,\r\n 600,\r\n 500,\r\n 400,\r\n 300,\r\n 200,\r\n 100,\r\n 90,\r\n 80,\r\n 70,\r\n 60,\r\n 50,\r\n 40,\r\n 30,\r\n 20,\r\n 10,\r\n 9,\r\n 8,\r\n 7,\r\n 6,\r\n 5,\r\n 4,\r\n 3,\r\n 2,\r\n 1\r\n ],\r\n values: [\r\n 'Ք',\r\n 'Փ',\r\n 'Ւ',\r\n 'Ց',\r\n 'Ր',\r\n 'Տ',\r\n 'Վ',\r\n 'Ս',\r\n 'Ռ',\r\n 'Ջ',\r\n 'Պ',\r\n 'Չ',\r\n 'Ո',\r\n 'Շ',\r\n 'Ն',\r\n 'Յ',\r\n 'Մ',\r\n 'Ճ',\r\n 'Ղ',\r\n 'Ձ',\r\n 'Հ',\r\n 'Կ',\r\n 'Ծ',\r\n 'Խ',\r\n 'Լ',\r\n 'Ի',\r\n 'Ժ',\r\n 'Թ',\r\n 'Ը',\r\n 'Է',\r\n 'Զ',\r\n 'Ե',\r\n 'Դ',\r\n 'Գ',\r\n 'Բ',\r\n 'Ա'\r\n ]\r\n };\r\n var HEBREW = {\r\n integers: [\r\n 10000,\r\n 9000,\r\n 8000,\r\n 7000,\r\n 6000,\r\n 5000,\r\n 4000,\r\n 3000,\r\n 2000,\r\n 1000,\r\n 400,\r\n 300,\r\n 200,\r\n 100,\r\n 90,\r\n 80,\r\n 70,\r\n 60,\r\n 50,\r\n 40,\r\n 30,\r\n 20,\r\n 19,\r\n 18,\r\n 17,\r\n 16,\r\n 15,\r\n 10,\r\n 9,\r\n 8,\r\n 7,\r\n 6,\r\n 5,\r\n 4,\r\n 3,\r\n 2,\r\n 1\r\n ],\r\n values: [\r\n 'י׳',\r\n 'ט׳',\r\n 'ח׳',\r\n 'ז׳',\r\n 'ו׳',\r\n 'ה׳',\r\n 'ד׳',\r\n 'ג׳',\r\n 'ב׳',\r\n 'א׳',\r\n 'ת',\r\n 'ש',\r\n 'ר',\r\n 'ק',\r\n 'צ',\r\n 'פ',\r\n 'ע',\r\n 'ס',\r\n 'נ',\r\n 'מ',\r\n 'ל',\r\n 'כ',\r\n 'יט',\r\n 'יח',\r\n 'יז',\r\n 'טז',\r\n 'טו',\r\n 'י',\r\n 'ט',\r\n 'ח',\r\n 'ז',\r\n 'ו',\r\n 'ה',\r\n 'ד',\r\n 'ג',\r\n 'ב',\r\n 'א'\r\n ]\r\n };\r\n var GEORGIAN = {\r\n integers: [\r\n 10000,\r\n 9000,\r\n 8000,\r\n 7000,\r\n 6000,\r\n 5000,\r\n 4000,\r\n 3000,\r\n 2000,\r\n 1000,\r\n 900,\r\n 800,\r\n 700,\r\n 600,\r\n 500,\r\n 400,\r\n 300,\r\n 200,\r\n 100,\r\n 90,\r\n 80,\r\n 70,\r\n 60,\r\n 50,\r\n 40,\r\n 30,\r\n 20,\r\n 10,\r\n 9,\r\n 8,\r\n 7,\r\n 6,\r\n 5,\r\n 4,\r\n 3,\r\n 2,\r\n 1\r\n ],\r\n values: [\r\n 'ჵ',\r\n 'ჰ',\r\n 'ჯ',\r\n 'ჴ',\r\n 'ხ',\r\n 'ჭ',\r\n 'წ',\r\n 'ძ',\r\n 'ც',\r\n 'ჩ',\r\n 'შ',\r\n 'ყ',\r\n 'ღ',\r\n 'ქ',\r\n 'ფ',\r\n 'ჳ',\r\n 'ტ',\r\n 'ს',\r\n 'რ',\r\n 'ჟ',\r\n 'პ',\r\n 'ო',\r\n 'ჲ',\r\n 'ნ',\r\n 'მ',\r\n 'ლ',\r\n 'კ',\r\n 'ი',\r\n 'თ',\r\n 'ჱ',\r\n 'ზ',\r\n 'ვ',\r\n 'ე',\r\n 'დ',\r\n 'გ',\r\n 'ბ',\r\n 'ა'\r\n ]\r\n };\r\n var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\r\n if (value < min || value > max) {\r\n return createCounterText(value, fallback, suffix.length > 0);\r\n }\r\n return (symbols.integers.reduce(function (string, integer, index) {\r\n while (value >= integer) {\r\n value -= integer;\r\n string += symbols.values[index];\r\n }\r\n return string;\r\n }, '') + suffix);\r\n };\r\n var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\r\n var string = '';\r\n do {\r\n if (!isNumeric) {\r\n value--;\r\n }\r\n string = resolver(value) + string;\r\n value /= codePointRangeLength;\r\n } while (value * codePointRangeLength >= codePointRangeLength);\r\n return string;\r\n };\r\n var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\r\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\r\n return ((value < 0 ? '-' : '') +\r\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\r\n return fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\r\n }) +\r\n suffix));\r\n };\r\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\r\n if (suffix === void 0) { suffix = '. '; }\r\n var codePointRangeLength = symbols.length;\r\n return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\r\n };\r\n var CJK_ZEROS = 1 << 0;\r\n var CJK_TEN_COEFFICIENTS = 1 << 1;\r\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\r\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\r\n var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\r\n if (value < -9999 || value > 9999) {\r\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\r\n }\r\n var tmp = Math.abs(value);\r\n var string = suffix;\r\n if (tmp === 0) {\r\n return numbers[0] + string;\r\n }\r\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\r\n var coefficient = tmp % 10;\r\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\r\n string = numbers[coefficient] + string;\r\n }\r\n else if (coefficient > 1 ||\r\n (coefficient === 1 && digit === 0) ||\r\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\r\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\r\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\r\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\r\n }\r\n else if (coefficient === 1 && digit > 0) {\r\n string = multipliers[digit - 1] + string;\r\n }\r\n tmp = Math.floor(tmp / 10);\r\n }\r\n return (value < 0 ? negativeSign : '') + string;\r\n };\r\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\r\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\r\n var JAPANESE_NEGATIVE = 'マイナス';\r\n var KOREAN_NEGATIVE = '마이너스';\r\n var createCounterText = function (value, type, appendSuffix) {\r\n var defaultSuffix = appendSuffix ? '. ' : '';\r\n var cjkSuffix = appendSuffix ? '、' : '';\r\n var koreanSuffix = appendSuffix ? ', ' : '';\r\n var spaceSuffix = appendSuffix ? ' ' : '';\r\n switch (type) {\r\n case LIST_STYLE_TYPE.DISC:\r\n return '•' + spaceSuffix;\r\n case LIST_STYLE_TYPE.CIRCLE:\r\n return '◦' + spaceSuffix;\r\n case LIST_STYLE_TYPE.SQUARE:\r\n return '◾' + spaceSuffix;\r\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\r\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n return string.length < 4 ? \"0\" + string : string;\r\n case LIST_STYLE_TYPE.CJK_DECIMAL:\r\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\r\n case LIST_STYLE_TYPE.LOWER_ROMAN:\r\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\r\n case LIST_STYLE_TYPE.UPPER_ROMAN:\r\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case LIST_STYLE_TYPE.LOWER_GREEK:\r\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\r\n case LIST_STYLE_TYPE.LOWER_ALPHA:\r\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\r\n case LIST_STYLE_TYPE.UPPER_ALPHA:\r\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\r\n case LIST_STYLE_TYPE.ARABIC_INDIC:\r\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.ARMENIAN:\r\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\r\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\r\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\r\n case LIST_STYLE_TYPE.BENGALI:\r\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.CAMBODIAN:\r\n case LIST_STYLE_TYPE.KHMER:\r\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\r\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\r\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\r\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\r\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\r\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\r\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\r\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\r\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\r\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\r\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\r\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\r\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\r\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case LIST_STYLE_TYPE.DEVANAGARI:\r\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.GEORGIAN:\r\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case LIST_STYLE_TYPE.GUJARATI:\r\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.GURMUKHI:\r\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.HEBREW:\r\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case LIST_STYLE_TYPE.HIRAGANA:\r\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\r\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\r\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\r\n case LIST_STYLE_TYPE.KANNADA:\r\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.KATAKANA:\r\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\r\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\r\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\r\n case LIST_STYLE_TYPE.LAO:\r\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.MONGOLIAN:\r\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.MYANMAR:\r\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.ORIYA:\r\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.PERSIAN:\r\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.TAMIL:\r\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.TELUGU:\r\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.THAI:\r\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.TIBETAN:\r\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\r\n case LIST_STYLE_TYPE.DECIMAL:\r\n default:\r\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n }\r\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\r\n var DocumentCloner = /** @class */ (function () {\r\n function DocumentCloner(element, options) {\r\n this.options = options;\r\n this.scrolledElements = [];\r\n this.referenceElement = element;\r\n this.counters = new CounterState();\r\n this.quoteDepth = 0;\r\n if (!element.ownerDocument) {\r\n throw new Error('Cloned element does not have an owner document');\r\n }\r\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\r\n }\r\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\r\n var _this = this;\r\n var iframe = createIFrameContainer(ownerDocument, windowSize);\r\n if (!iframe.contentWindow) {\r\n return Promise.reject(\"Unable to find iframe window\");\r\n }\r\n var scrollX = ownerDocument.defaultView.pageXOffset;\r\n var scrollY = ownerDocument.defaultView.pageYOffset;\r\n var cloneWindow = iframe.contentWindow;\r\n var documentClone = cloneWindow.document;\r\n /* Chrome doesn't detect relative background-images assigned in inline