{"version":3,"sources":["webpack:///../node_modules/tslib/tslib.es6.js","webpack:///../node_modules/src/Util.ts","webpack:///../../src/css/layout/bounds.ts","webpack:///../node_modules/css-line-break/node_modules/src/Util.ts","webpack:///../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","webpack:///../node_modules/css-line-break/node_modules/src/Trie.ts","webpack:///../node_modules/src/linebreak-trie.ts","webpack:///../node_modules/src/LineBreak.ts","webpack:///../../src/css/syntax/tokenizer.ts","webpack:///../../src/css/syntax/parser.ts","webpack:///../../src/css/types/length.ts","webpack:///../../src/css/types/length-percentage.ts","webpack:///../../src/css/types/angle.ts","webpack:///../../src/css/types/color.ts","webpack:///../../src/css/property-descriptors/background-clip.ts","webpack:///../../src/css/property-descriptors/background-color.ts","webpack:///../../src/css/types/functions/gradient.ts","webpack:///../../src/css/types/functions/linear-gradient.ts","webpack:///../../src/css/types/functions/-prefix-linear-gradient.ts","webpack:///../../src/css/types/functions/-webkit-gradient.ts","webpack:///../../src/css/types/functions/radial-gradient.ts","webpack:///../../src/css/types/functions/-prefix-radial-gradient.ts","webpack:///../../src/css/types/image.ts","webpack:///../../src/css/property-descriptors/background-size.ts","webpack:///../../src/css/property-descriptors/background-image.ts","webpack:///../../src/css/property-descriptors/background-origin.ts","webpack:///../../src/css/property-descriptors/background-position.ts","webpack:///../../src/css/property-descriptors/background-repeat.ts","webpack:///../../src/css/property-descriptors/line-break.ts","webpack:///../../src/css/property-descriptors/border-color.ts","webpack:///../../src/css/property-descriptors/border-radius.ts","webpack:///../../src/css/property-descriptors/border-style.ts","webpack:///../../src/css/property-descriptors/border-width.ts","webpack:///../../src/css/property-descriptors/color.ts","webpack:///../../src/css/property-descriptors/direction.ts","webpack:///../../src/css/property-descriptors/display.ts","webpack:///../../src/css/property-descriptors/float.ts","webpack:///../../src/css/property-descriptors/letter-spacing.ts","webpack:///../../src/css/property-descriptors/word-break.ts","webpack:///../../src/css/property-descriptors/line-height.ts","webpack:///../../src/css/property-descriptors/list-style-image.ts","webpack:///../../src/css/property-descriptors/list-style-position.ts","webpack:///../../src/css/property-descriptors/list-style-type.ts","webpack:///../../src/css/property-descriptors/margin.ts","webpack:///../../src/css/property-descriptors/overflow.ts","webpack:///../../src/css/property-descriptors/overflow-wrap.ts","webpack:///../../src/css/property-descriptors/padding.ts","webpack:///../../src/css/property-descriptors/text-align.ts","webpack:///../../src/css/property-descriptors/position.ts","webpack:///../../src/css/property-descriptors/text-shadow.ts","webpack:///../../src/css/property-descriptors/text-transform.ts","webpack:///../../src/css/property-descriptors/transform.ts","webpack:///../../src/css/property-descriptors/transform-origin.ts","webpack:///../../src/css/property-descriptors/visibility.ts","webpack:///../node_modules/text-segmentation/node_modules/src/Util.ts","webpack:///../../src/css/property-descriptors/z-index.ts","webpack:///../../src/css/types/time.ts","webpack:///../../src/css/property-descriptors/opacity.ts","webpack:///../../src/css/property-descriptors/text-decoration-color.ts","webpack:///../../src/css/property-descriptors/text-decoration-line.ts","webpack:///../../src/css/property-descriptors/font-family.ts","webpack:///../../src/css/property-descriptors/font-size.ts","webpack:///../../src/css/property-descriptors/font-weight.ts","webpack:///../../src/css/property-descriptors/font-variant.ts","webpack:///../../src/css/property-descriptors/font-style.ts","webpack:///../../src/core/bitwise.ts","webpack:///../../src/css/property-descriptors/content.ts","webpack:///../../src/css/property-descriptors/counter-increment.ts","webpack:///../../src/css/property-descriptors/counter-reset.ts","webpack:///../../src/css/property-descriptors/duration.ts","webpack:///../../src/css/property-descriptors/quotes.ts","webpack:///../../src/css/property-descriptors/box-shadow.ts","webpack:///../../src/css/property-descriptors/paint-order.ts","webpack:///../../src/css/property-descriptors/webkit-text-stroke-color.ts","webpack:///../../src/css/property-descriptors/webkit-text-stroke-width.ts","webpack:///../../src/css/index.ts","webpack:///../../src/core/debugger.ts","webpack:///../../src/dom/element-container.ts","webpack:///../node_modules/src/grapheme-break-trie.ts","webpack:///../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","webpack:///../node_modules/text-segmentation/node_modules/src/Trie.ts","webpack:///../node_modules/src/GraphemeBreak.ts","webpack:///../../src/dom/document-cloner.ts","webpack:///../../src/core/features.ts","webpack:///../../src/css/layout/text.ts","webpack:///../../src/dom/text-container.ts","webpack:///../../src/dom/replaced-elements/image-element-container.ts","webpack:///../../src/dom/replaced-elements/canvas-element-container.ts","webpack:///../../src/dom/replaced-elements/svg-element-container.ts","webpack:///../../src/dom/elements/li-element-container.ts","webpack:///../../src/dom/elements/ol-element-container.ts","webpack:///../../src/dom/replaced-elements/input-element-container.ts","webpack:///../../src/dom/elements/select-element-container.ts","webpack:///../../src/dom/elements/textarea-element-container.ts","webpack:///../../src/dom/replaced-elements/iframe-element-container.ts","webpack:///../../src/dom/node-parser.ts","webpack:///../../src/css/types/functions/counter.ts","webpack:///../../src/render/bound-curves.ts","webpack:///../../src/core/cache-storage.ts","webpack:///../../src/render/vector.ts","webpack:///../../src/render/bezier-curve.ts","webpack:///../../src/render/effects.ts","webpack:///../../src/render/path.ts","webpack:///../../src/render/stacking-context.ts","webpack:///../../src/render/border.ts","webpack:///../../src/render/box-sizing.ts","webpack:///../../src/render/background.ts","webpack:///../../src/core/util.ts","webpack:///../../src/render/font-metrics.ts","webpack:///../../src/render/renderer.ts","webpack:///../../src/render/canvas/canvas-renderer.ts","webpack:///../../src/render/canvas/foreignobject-renderer.ts","webpack:///../../src/core/logger.ts","webpack:///../../src/core/context.ts","webpack:///../../src/index.ts"],"names":["d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","ar","l","slice","concat","left","top","width","height","add","x","w","h","Bounds","fromClientRect","context","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","rect","EMPTY","parseBounds","node","getBoundingClientRect","parseDocumentSize","document","documentElement","Error","Math","max","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","toCodePoints","str","codePoints","charCodeAt","extra","fromCodePoint","codeUnits","index","codePoint","fromCharCode","chars","lookup","Uint8Array","decode","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","buffer","ArrayBuffer","bytes","isArray","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","view","start","end","Uint16Array","slice32","Uint32Array","createTrieFromBase64","_byteLength","view32","view16","headerLength","data","ceil","Trie","initialValue","errorValue","highStart","highValueIndex","get","ix","LETTER_NUMBER_MODIFIER","BK","CR","LF","CM","NL","WJ","ZW","GL","SP","ZWJ","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","types","indices","categories","forEach","classType","indexOf","prev","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","options","wordBreak","isLetterNumber","map","forbiddenBreakpoints","letterNumber","undefined","required","LineBreaker","lastEnd","nextIndex","Break","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","u","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","unshift","delta","digits","questionMarks","digit","endDigits","toLowerCase","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","_tokens","tokenizer","Tokenizer","Parser","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","name","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","DEG","GRAD","RAD","TURN","angle","parse","_context","PI","isAngle","parseNamedSide","sideOrCorner","filter","ident","join","deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","round","getTokenColorValue","rgb","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","prefix","backgroundColor","format","parseColorStop","colorType","stop","processColorStops","stops","lineLength","first","last","processStops","previous","absoluteValue","gapBegin","gapLength","beforeGap","gapValue","getAngleFromCorner","corner","centerX","centerY","atan2","calculateGradientDirection","radian","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","corners","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","calculateRadius","gradient","rx","ry","size","shape","linearGradient","firstToken","angleType","colorStop","prefixLinearGradient","webkitGradient","position","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","url","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","BACKGROUND_SIZE","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","toString","fontWeight","fontVariant","fontStyle","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","descriptor","parser","elementDebuggerAttribute","getElementDebugType","element","attribute","getAttribute","isDebugging","elementType","textNodes","elements","styles","CSSParsedDeclaration","window","getComputedStyle","isHTMLElementNode","some","bounds","PseudoElementType","Prepend","Control","Extend","SpacingMark","L","V","T","LV","LVT","Extended_Pictographic","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","bk","breaker","graphemes","testRangeBounds","TEST_HEIGHT","createRange","range","testElement","createElement","appendChild","selectNode","rangeBounds","rangeHeight","removeChild","testIOSLineBreak","wordSpacing","innerHTML","repeat","firstChild","textList","offset","supports","every","text","setStart","setEnd","boundAhead","testCORS","Image","crossOrigin","testResponseType","XMLHttpRequest","responseType","testSVG","img","canvas","ctx","getContext","src","drawImage","toDataURL","isGreenPixel","testForeignObject","fillStyle","fillRect","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG","getImageData","catch","xmlns","createElementNS","foreignObject","setAttributeNS","onload","onerror","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","defineProperty","SUPPORT_RANGE_BOUNDS","fetch","Intl","Segmenter","parseTextBounds","breakText","textBounds","trim","clientRects","getClientRects","subSegments","segmentGraphemes","subSegment","TextBounds","replacementNode","splitText","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","SUPPORT_NATIVE_TEXT_SEGMENTATION","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","words","replace","CAPITALIZE","capitalize","m","p1","p2","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","ElementContainer","setAttribute","baseVal","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","placeholder","CHECKBOX","RADIO","INPUT_COLOR","input","checked","option","selectedIndex","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","TextContainer","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","ImageElementContainer","isCanvasElement","CanvasElementContainer","SVGElementContainer","isLIElement","LIElementContainer","isOLElement","OLElementContainer","isInputElement","InputElementContainer","SelectElementContainer","TextareaElementContainer","isIFrameElement","IFrameElementContainer","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","floor","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","scrolledElements","referenceElement","CounterState","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","scrollTo","test","navigator","userAgent","logger","warn","onclone","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","error","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","CSSParsedCounterDeclaration","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","CSSParsedPseudoDeclaration","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","target","property","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","getOrigin","link","CacheStorage","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","_options","_cache","has","isBlobImage","isRenderable","loadImage","match","key","useCORS","isInlineImage","SUPPORT_CORS_IMAGES","useProxy","proxy","SUPPORT_CORS_XHR","debug","isInlineBase64Image","setTimeout","imageTimeout","keys","SUPPORT_RESPONSE_TYPE","xhr","status","response","FileReader","addEventListener","readAsDataURL","queryString","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","substr","deltaX","deltaY","Vector","lerp","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","BezierCurve","reverse","isBezierCurve","path","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","effects","BoundCurves","OpacityEffect","TransformEffect","borderBox","paddingBox","ClipEffect","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","ElementPaint","listOwnerItems","parentStack","stack","StackingContext","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","targetRatio","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","SMALL_IMAGE","SAMPLE_TEXT","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","MASK_OFFSET","_activeEffects","scale","fontMetrics","FontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","save","globalAlpha","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letters","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","iframeRenderer","CanvasRenderer","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","mask","paths","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","createPattern","x0","x1","y0","y1","createLinearGradient","addColorStop","createRadialGradient","midX","midY","invF","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","setLineDash","lineCap","stroke","path1","path2","Renderer","iOSBrokenFonts","fontFamilies","id","enabled","Date","now","console","getTime","instances","instanceName","Context","instanceCount","Logger","logging","Cache","html2canvas","renderElement","opts","resourceOptions","contextOptions","windowOptions","windowWidth","innerWidth","windowHeight","innerHeight","foreignObjectRendering","cloneOptions","documentCloner","DocumentCloner","clonedElement","parseBackgroundColor","renderOptions","devicePixelRatio","renderer","ForeignObjectRenderer","removeContainer","backgroundColorOverride","defaultBackgroundColor"],"mappings":"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","file":"js/chunk-2d216257.24acdfd1.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline