fl-web-component 1.4.7 → 1.4.9-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +1 -28
  2. package/dist/fl-web-component.common.1.js +2 -2
  3. package/dist/fl-web-component.common.1.js.map +1 -1
  4. package/dist/fl-web-component.common.2.js.map +1 -1
  5. package/dist/fl-web-component.common.js +77420 -47296
  6. package/dist/fl-web-component.common.js.map +1 -1
  7. package/dist/fl-web-component.css +1 -1
  8. package/package.json +12 -4
  9. package/packages/components/com-flcanvas/components/entityFormatting.js +9 -1
  10. package/packages/components/com-graphics/box.json +77 -0
  11. package/packages/components/com-graphics/component/ann-tool.vue +465 -0
  12. package/packages/components/com-graphics/index copy.vue +1679 -0
  13. package/packages/components/com-graphics/index.vue +3890 -301
  14. package/packages/components/com-graphics/pid.vue +210 -44
  15. package/packages/components/com-graphics/test.html +127 -0
  16. package/packages/components/com-tiles/index.vue +187 -0
  17. package/packages/utils/StreamLoader.js +1498 -0
  18. package/packages/utils/StreamLoaderParser.worker.js +595 -0
  19. package/patches/camera-controls+2.9.0.patch +63 -63
  20. package/src/main.js +9 -1
  21. package/src/static/ann-img/mark_circle@2x.png +0 -0
  22. package/src/static/ann-img/mark_clear@2x.png +0 -0
  23. package/src/static/ann-img/mark_cloud@2x.png +0 -0
  24. package/src/static/ann-img/mark_color@2x.png +0 -0
  25. package/src/static/ann-img/mark_eraser@2x.png +0 -0
  26. package/src/static/ann-img/mark_exit@2x.png +0 -0
  27. package/src/static/ann-img/mark_finish@2x.png +0 -0
  28. package/src/static/ann-img/mark_font@2x.png +0 -0
  29. package/src/static/ann-img/mark_polyline@2x.png +0 -0
  30. package/src/static/ann-img/mark_rectangle@2x.png +0 -0
  31. package/src/static/ann-img/mark_zoomin@2x.png +0 -0
  32. package/src/static/ann-img/mark_zoomout@2x.png +0 -0
  33. package/src/utils/cloud.js +110 -0
  34. package/src/utils/cursor.js +10 -0
  35. package/src/utils/flgltf-parser.js +245 -193
  36. package/src/utils/instance-parser.js +718 -170
  37. package/dist/fl-web-component.common.3.js +0 -7740
  38. package/dist/fl-web-component.common.3.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://fl-web-component/../node_modules/tslib/tslib.es6.js","webpack://fl-web-component/../../src/css/layout/bounds.ts","webpack://fl-web-component/../node_modules/src/Util.ts","webpack://fl-web-component/../node_modules/css-line-break/node_modules/src/Util.ts","webpack://fl-web-component/../node_modules/css-line-break/node_modules/src/Trie.ts","webpack://fl-web-component/../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","webpack://fl-web-component/../node_modules/src/linebreak-trie.ts","webpack://fl-web-component/../node_modules/src/LineBreak.ts","webpack://fl-web-component/../../src/css/syntax/tokenizer.ts","webpack://fl-web-component/../../src/css/syntax/parser.ts","webpack://fl-web-component/../../src/css/types/length.ts","webpack://fl-web-component/../../src/css/types/length-percentage.ts","webpack://fl-web-component/../../src/css/types/angle.ts","webpack://fl-web-component/../../src/css/types/color.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-clip.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-color.ts","webpack://fl-web-component/../../src/css/types/functions/gradient.ts","webpack://fl-web-component/../../src/css/types/functions/linear-gradient.ts","webpack://fl-web-component/../../src/css/types/functions/-prefix-linear-gradient.ts","webpack://fl-web-component/../../src/css/types/functions/-webkit-gradient.ts","webpack://fl-web-component/../../src/css/types/functions/radial-gradient.ts","webpack://fl-web-component/../../src/css/types/functions/-prefix-radial-gradient.ts","webpack://fl-web-component/../../src/css/types/image.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-image.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-origin.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-position.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-repeat.ts","webpack://fl-web-component/../../src/css/property-descriptors/background-size.ts","webpack://fl-web-component/../../src/css/property-descriptors/border-color.ts","webpack://fl-web-component/../../src/css/property-descriptors/border-radius.ts","webpack://fl-web-component/../../src/css/property-descriptors/border-style.ts","webpack://fl-web-component/../../src/css/property-descriptors/border-width.ts","webpack://fl-web-component/../../src/css/property-descriptors/color.ts","webpack://fl-web-component/../../src/css/property-descriptors/direction.ts","webpack://fl-web-component/../../src/css/property-descriptors/display.ts","webpack://fl-web-component/../../src/css/property-descriptors/float.ts","webpack://fl-web-component/../../src/css/property-descriptors/letter-spacing.ts","webpack://fl-web-component/../../src/css/property-descriptors/line-break.ts","webpack://fl-web-component/../../src/css/property-descriptors/line-height.ts","webpack://fl-web-component/../../src/css/property-descriptors/list-style-image.ts","webpack://fl-web-component/../../src/css/property-descriptors/list-style-position.ts","webpack://fl-web-component/../../src/css/property-descriptors/list-style-type.ts","webpack://fl-web-component/../../src/css/property-descriptors/margin.ts","webpack://fl-web-component/../../src/css/property-descriptors/overflow.ts","webpack://fl-web-component/../../src/css/property-descriptors/overflow-wrap.ts","webpack://fl-web-component/../../src/css/property-descriptors/padding.ts","webpack://fl-web-component/../../src/css/property-descriptors/text-align.ts","webpack://fl-web-component/../../src/css/property-descriptors/position.ts","webpack://fl-web-component/../../src/css/property-descriptors/text-shadow.ts","webpack://fl-web-component/../../src/css/property-descriptors/text-transform.ts","webpack://fl-web-component/../../src/css/property-descriptors/transform.ts","webpack://fl-web-component/../../src/css/property-descriptors/transform-origin.ts","webpack://fl-web-component/../../src/css/property-descriptors/visibility.ts","webpack://fl-web-component/../../src/css/property-descriptors/word-break.ts","webpack://fl-web-component/../../src/css/property-descriptors/z-index.ts","webpack://fl-web-component/../../src/css/types/time.ts","webpack://fl-web-component/../../src/css/property-descriptors/opacity.ts","webpack://fl-web-component/../../src/css/property-descriptors/text-decoration-color.ts","webpack://fl-web-component/../../src/css/property-descriptors/text-decoration-line.ts","webpack://fl-web-component/../../src/css/property-descriptors/font-family.ts","webpack://fl-web-component/../../src/css/property-descriptors/font-size.ts","webpack://fl-web-component/../../src/css/property-descriptors/font-weight.ts","webpack://fl-web-component/../../src/css/property-descriptors/font-variant.ts","webpack://fl-web-component/../../src/css/property-descriptors/font-style.ts","webpack://fl-web-component/../../src/core/bitwise.ts","webpack://fl-web-component/../../src/css/property-descriptors/content.ts","webpack://fl-web-component/../../src/css/property-descriptors/counter-increment.ts","webpack://fl-web-component/../../src/css/property-descriptors/counter-reset.ts","webpack://fl-web-component/../../src/css/property-descriptors/duration.ts","webpack://fl-web-component/../../src/css/property-descriptors/quotes.ts","webpack://fl-web-component/../../src/css/property-descriptors/box-shadow.ts","webpack://fl-web-component/../../src/css/property-descriptors/paint-order.ts","webpack://fl-web-component/../../src/css/property-descriptors/webkit-text-stroke-color.ts","webpack://fl-web-component/../../src/css/property-descriptors/webkit-text-stroke-width.ts","webpack://fl-web-component/../../src/css/index.ts","webpack://fl-web-component/../../src/core/debugger.ts","webpack://fl-web-component/../../src/dom/element-container.ts","webpack://fl-web-component/../node_modules/src/grapheme-break-trie.ts","webpack://fl-web-component/../node_modules/text-segmentation/node_modules/src/Util.ts","webpack://fl-web-component/../node_modules/text-segmentation/node_modules/src/Trie.ts","webpack://fl-web-component/../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","webpack://fl-web-component/../node_modules/src/GraphemeBreak.ts","webpack://fl-web-component/../../src/core/features.ts","webpack://fl-web-component/../../src/css/layout/text.ts","webpack://fl-web-component/../../src/dom/text-container.ts","webpack://fl-web-component/../../src/dom/replaced-elements/image-element-container.ts","webpack://fl-web-component/../../src/dom/replaced-elements/canvas-element-container.ts","webpack://fl-web-component/../../src/dom/replaced-elements/svg-element-container.ts","webpack://fl-web-component/../../src/dom/elements/li-element-container.ts","webpack://fl-web-component/../../src/dom/elements/ol-element-container.ts","webpack://fl-web-component/../../src/dom/replaced-elements/input-element-container.ts","webpack://fl-web-component/../../src/dom/elements/select-element-container.ts","webpack://fl-web-component/../../src/dom/elements/textarea-element-container.ts","webpack://fl-web-component/../../src/dom/replaced-elements/iframe-element-container.ts","webpack://fl-web-component/../../src/dom/node-parser.ts","webpack://fl-web-component/../../src/css/types/functions/counter.ts","webpack://fl-web-component/../../src/dom/document-cloner.ts","webpack://fl-web-component/../../src/core/cache-storage.ts","webpack://fl-web-component/../../src/render/vector.ts","webpack://fl-web-component/../../src/render/bezier-curve.ts","webpack://fl-web-component/../../src/render/bound-curves.ts","webpack://fl-web-component/../../src/render/effects.ts","webpack://fl-web-component/../../src/render/path.ts","webpack://fl-web-component/../../src/render/stacking-context.ts","webpack://fl-web-component/../../src/render/border.ts","webpack://fl-web-component/../../src/render/box-sizing.ts","webpack://fl-web-component/../../src/render/background.ts","webpack://fl-web-component/../../src/core/util.ts","webpack://fl-web-component/../../src/render/font-metrics.ts","webpack://fl-web-component/../../src/render/renderer.ts","webpack://fl-web-component/../../src/render/canvas/canvas-renderer.ts","webpack://fl-web-component/../../src/render/canvas/foreignobject-renderer.ts","webpack://fl-web-component/../../src/core/logger.ts","webpack://fl-web-component/../../src/core/context.ts","webpack://fl-web-component/../../src/index.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__assign","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","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","l","ar","slice","concat","Bounds","left","top","width","height","add","x","w","h","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$1","toCodePoints","str","codePoints","charCodeAt","extra","fromCodePoint$1","fromCodePoint","_i","codeUnits","index","codePoint","fromCharCode","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","decode$1","decode","base64","bufferLength","len","encoded1","encoded2","encoded3","encoded4","buffer","ArrayBuffer","bytes","isArray","polyUint16Array$1","polyUint16Array","polyUint32Array$1","polyUint32Array","UTRIE2_SHIFT_2$1","UTRIE2_SHIFT_1$1","UTRIE2_INDEX_SHIFT$1","UTRIE2_SHIFT_1_2$1","UTRIE2_LSCP_INDEX_2_OFFSET$1","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_DATA_MASK$1","UTRIE2_LSCP_INDEX_2_LENGTH$1","UTRIE2_INDEX_2_BMP_LENGTH$1","UTRIE2_UTF8_2B_INDEX_2_OFFSET$1","UTRIE2_UTF8_2B_INDEX_2_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","UTRIE2_INDEX_2_MASK$1","slice16$1","slice16","view","start","end","Uint16Array","slice32$1","slice32","Uint32Array","createTrieFromBase64$1","createTrieFromBase64","_byteLength","view32","view16","headerLength","data","ceil","Trie$1","Trie","initialValue","errorValue","highStart","highValueIndex","get","ix","chars$3","lookup$3","i$3","base64$1","LETTER_NUMBER_MODIFIER","BK","CR$1","LF$1","CM","NL","WJ","ZW","GL","SP","ZWJ$1","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$1","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","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","_a","isLetterNumber","map","forbiddenBreakpoints","letterNumber","undefined","Break","required","LineBreaker","lastEnd","nextIndex","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","SPACE","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","Tokenizer","_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","start_1","digit","endDigits","toLowerCase","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","Parser","_tokens","tokenizer","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$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","color","asString","alpha","blue","green","red","round","getTokenColorValue","rgb","_b","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","stop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","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","angle$1","firstToken","colorStop","prefixLinearGradient","webkitGradient","position","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","image_1","url","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","BACKGROUND_SIZE","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","LINE_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$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","WORD_BREAK","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_1","close_1","open","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","transform","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","elementDebuggerAttribute","getElementDebugType","element","attribute","getAttribute","isDebugging","elementType","ElementContainer","textNodes","elements","styles","window","getComputedStyle","isHTMLElementNode","some","bounds","chars$1","lookup$1","i$1","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","chars","lookup","Prepend","CR","LF","Control","Extend","SpacingMark","L","V","T","LV","LVT","ZWJ","Extended_Pictographic","RI","UnicodeTrie","BREAK_NOT_ALLOWED","BREAK_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","breaker","graphemes","bk","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$1","getImageData","catch","xmlns","createElementNS","foreignObject","setAttributeNS","loadSerializedSVG","onload","onerror","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","defineProperty","SUPPORT_WORD_BREAKING","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","TextBounds","parseTextBounds","breakText","textBounds","trim","clientRects","getClientRects","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","splitText","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","words","word_1","TextContainer","replace","CAPITALIZE","capitalize","m","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","setAttribute","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","placeholder","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","input","checked","SelectElementContainer","option","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","_typeof","className","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","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","DocumentCloner","scrolledElements","referenceElement","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","resolvePseudoContent","PseudoElementType","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","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","CacheStorage","getOrigin","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","Cache","_options","_cache","has","isBlobImage","isRenderable","loadImage","match","key","useCORS","isInlineImage","useProxy","proxy","debug","isInlineBase64Image","setTimeout","imageTimeout","keys","xhr","status","response","reader_1","FileReader","addEventListener","readAsDataURL","queryString","timeout_1","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","substr","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","CORNER","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","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","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","width_1","height_1","width_2","height_2","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","FontMetrics","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","Renderer","MASK_OFFSET","CanvasRenderer","_activeEffects","scale","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","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_p","_e","_g","_f","_j","_h","_l","_k","_o","_m","mask","paths","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","createPattern","x0","x1","y0","y1","gradient_1","createLinearGradient","addColorStop","top_1","radialGradient_1","createRadialGradient","midX","midY","invF","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","borders_1","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","setLineDash","lineCap","stroke","path1","path2","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","Logger","id","enabled","Date","now","console","getTime","instances","Context","instanceName","instanceCount","logging","html2canvas","renderElement","opts","resourceOptions","contextOptions","windowOptions","windowWidth","innerWidth","windowHeight","innerHeight","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","_u","parseBackgroundColor","renderOptions","devicePixelRatio","_q","_r","_s","renderer","_t","removeContainer","backgroundColorOverride","defaultBackgroundColor"],"mappings":"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","file":"fl-web-component.common.3.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","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","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","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 {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","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","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<number> = {\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<Color> = {\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<BackgroundClip> = {\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<ICSSImage> = {\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<string, (context: Context, args: CSSValue[]) => 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 {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<ICSSImage[]> = {\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<BackgroundOrigin> = {\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<BackgroundPosition> = {\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<BackgroundRepeat> = {\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 {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<BackgroundSize> = {\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 {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<BorderRadius> => ({\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<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = 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<BORDER_STYLE> => ({\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<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\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<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = 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<DIRECTION> = {\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<Display> = {\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<FLOAT> = {\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<number> = {\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 LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\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 {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<ICSSImage | null> = {\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<LIST_STYLE_POSITION> = {\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<LIST_STYLE_TYPE> = {\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<OVERFLOW[]> = {\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<OVERFLOW_WRAP> = {\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<TEXT_ALIGN> = {\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<POSITION> = {\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<TextShadow> = {\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<TEXT_TRANSFORM> = {\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<Transform> = {\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<TransformOrigin> = {\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<VISIBILITY> = {\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","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<WORD_BREAK> = {\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 {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<zIndex> = {\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<number> = {\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<number> = {\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<TextDecorationLine> = {\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<FontFamily> = {\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<number> = {\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<string[]> = {\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<FONT_STYLE> = {\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<Content> = {\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<CounterIncrement> = {\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<CounterReset> = {\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<number[]> = {\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<Quotes> = {\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<BoxShadow> = {\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<PaintOrder> = {\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<number> = {\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<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\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<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\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<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\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<any>, 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<DebuggerType, DebuggerType.NONE>): 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 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 {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","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 {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 {fromCodePoint, toCodePoints} from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n return value;\n }\n};\n","import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n private readonly counters: {[key: string]: number[]} = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\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<HTMLIFrameElement> {\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 <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d');\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n","import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: {[key: string]: Promise<any>} = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n effects.unshift(...croplessEffects);\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: {[key: string]: FontMetric};\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return {baseline, middle};\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach((textDecorationLine) => {\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top + baseline),\n text.bounds.width,\n 1\n );\n\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top),\n text.bounds.width,\n 1\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n // TODO try and find exact position for line-through\n this.ctx.fillRect(\n text.bounds.left,\n Math.ceil(text.bounds.top + middle),\n text.bounds.width,\n 1\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(\n image,\n 0,\n 0,\n container.intrinsicWidth,\n container.intrinsicHeight,\n box.left,\n box.top,\n box.width,\n box.height\n );\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n if (image.width === width && image.height === height) {\n return image;\n }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: {[key: string]: Logger} = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({id, enabled}: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const {width, height, left, top} =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],"sourceRoot":""}