vendor.js.map 1.5 MB

1
  1. {"version":3,"sources":["webpack:///./node_modules/@dcloudio/uni-mp-weixin/dist/index.js?543d","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js?f0c5","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js?66fd","webpack:///(webpack)/buildin/global.js?cd00","uni-app:///static/html/js/test.js","uni-app:///static/html/js/html2canvas.js","uni-app:///static/html2canvas.js","uni-app:///uParse-master/src/libs/html2json.js","uni-app:///uParse-master/src/libs/wxDiscode.js","uni-app:///uParse-master/src/libs/htmlparser.js"],"names":["_toString","Object","prototype","toString","hasOwnProperty","isFn","fn","isStr","str","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","cachedFn","hit","camelizeRE","camelize","replace","_","c","toUpperCase","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","i","length","indexOf","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","keys","forEach","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","callbackInterceptor","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","slice","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","catch","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","test","isSyncApi","isCallbackApi","handlePromise","err","shouldPromise","finally","constructor","value","reason","promisify","promiseApi","success","fail","complete","reject","assign","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","wx","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","result","Math","floor","interceptors","baseApi","freeze","__proto__","EventChannel","id","events","listener","emitCache","on","eventName","args","fns","opt","apply","filter","type","_addListener","_clearCache","cacheArgs","emit","shift","eventChannels","eventChannelStack","initEventChannel","eventChannel","getEventChannel","navigateTo","fromArgs","toArgs","url","fromRes","toRes","findExistsPageIndex","pages","getCurrentPages","len","page","$page","fullPath","redirectTo","exists","delta","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","item","indicator","loop","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","windowHeight","protocols","getSystemInfo","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","error","arg1","arg2","todoApis","TODOS","createTodoApi","todoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","getUniEmitter","Vue","ctx","$on","arguments","$off","$once","$emit","eventApi","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","canIUse","oldTriggerEvent","triggerEvent","event","initHook","oldHook","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","find","mixin","initHooks","mpOptions","$vm","__call_hook","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","split","_$vueId","_$vuePid","initData","context","methods","e","process","VUE_APP_DEBUG","JSON","parse","stringify","__lifecycle_hooks__","PROP_TYPES","String","Boolean","createObserver","observer","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","Date","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","generic","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","propPath","valuePath","vFor","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","extraObj","__args__","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","dataset","comType","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","$scope","handleEvent","eventOpts","eventOpt","eventsArray","charAt","isOnce","eventArray","handlerCtx","handler","Error","once","parseBaseApp","initRefs","store","$store","mpHost","beforeCreate","appOptions","onLaunch","app","globalData","_isMounted","findVmByVueId","vuePid","$children","childVm","parentVm","Behavior","isPage","route","initRelation","defineProperty","get","$refs","components","selectAllComponents","component","ref","forComponents","handleLink","parent","parseApp","createApp","getOpenerEventChannel","__eventChannel__","callHook","__id__","App","encodeReserveRE","encodeReserveReplacer","charCodeAt","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","map","val","undefined","val2","join","x","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","propsData","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","is","parsePage","createPage","createComponent","canIUseApi","apiName","uni","Proxy","set","uni$1","f","module","exports","define","t","n","r","s","o","u","a","require","code","l","_dereq_","global","root","freeExports","nodeType","freeModule","freeGlobal","window","self","punycode","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","fromCharCode","RangeError","array","mapDomain","string","parts","labels","encoded","ucs2decode","output","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","numPoints","firstTime","k","decode","input","inputLength","out","bias","basic","j","oldi","w","baseMinusT","lastIndexOf","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","toLowerCase","toASCII","amd","log","restoreOwnerScroll","ownerDocument","y","defaultView","pageXOffset","pageYOffset","scrollTo","cloneCanvasContents","canvas","clonedCanvas","width","height","getContext","putImageData","getImageData","cloneNode","node","javascriptEnabled","clone","document","createTextNode","nodeValue","child","firstChild","nodeName","appendChild","nextSibling","_scrollTop","scrollTop","_scrollLeft","scrollLeft","initNode","containerDocument","documentElement","container","createElement","className","style","visibility","position","border","scrolling","body","documentClone","contentWindow","onload","interval","setInterval","childNodes","clearInterval","navigator","userAgent","scrollY","scrollX","open","write","replaceChild","adoptNode","close","Color","g","b","fromArray","namedColor","rgb","rgba","hex6","hex3","darken","amount","round","isTransparent","isBlack","min","_hex3","match","_hex6","substring","_rgb","_rgba","color","colors","isColor","Support","CanvasRenderer","ImageLoader","NodeParser","NodeContainer","utils","createWindowClone","loadUrlDocument","getBounds","html2canvasNodeAttribute","html2canvasCloneIndex","html2canvas","nodeList","logging","start","now","async","allowTaint","removeContainer","imageTimeout","renderer","strict","proxy","innerWidth","innerHeight","absoluteUrl","renderWindow","setAttribute","renderDocument","onrendered","html2canvasExport","html2canvasIndex","attributeName","selector","querySelector","removeAttribute","clonedWindow","oncloneHandler","onclone","support","imageLoader","bounds","parser","crop","scale","origBounds","cropBounds","cleanupContainer","parentNode","removeChild","croppedCanvas","x1","max","x2","y1","y2","drawImage","documentWidth","doc","scrollWidth","offsetWidth","clientWidth","documentHeight","scrollHeight","offsetHeight","clientHeight","link","href","smallImage","DummyImageContainer","src","image","Image","onerror","Font","family","img","span","sampleText","baseline","middle","fontFamily","fontSize","margin","padding","verticalAlign","offsetTop","lineHeight","lineWidth","FontMetrics","getMetrics","FrameContainer","sameOrigin","proxyLoad","URL","GradientContainer","imageData","colorStops","x0","y0","TYPES","LINEAR","RADIAL","REGEXP_COLORSTOP","ImageContainer","cors","tainted","crossOrigin","ProxyImageContainer","SVGContainer","SVGNodeContainer","LinearGradientContainer","WebkitGradientContainer","bind","origin","getOrigin","location","findImages","nodes","images","reduce","imageNodes","addImage","loadImage","findBackgroundImage","parseBackgroundImages","hasImageBackground","newImage","imageExists","isSVG","svg","isSameOrigin","useCORS","isInline","some","hostname","port","getPromise","timeout","dummy","found","fetch","all","timer","race","setTimeout","clearTimeout","hasDirection","REGEXP_DIRECTION","reverse","ratio","parseFloat","colorStop","colorStopMatch","unit","stop","count","logger","Function","parseBackgrounds","offsetBounds","stack","borders","clip","backgroundClip","visible","computedStyles","styles","backgroundImages","transformData","transformMatrix","isPseudoElement","opacity","cloneTo","getOpacity","cssFloat","assignStack","children","isElementVisible","Node","TEXT_NODE","css","hasAttribute","getAttribute","attribute","computedStyle","before","prefixedCss","prefixes","prefix","getComputedStyle","cssInt","fontWeight","weight","parseClip","matches","CLIP","cssList","property","trim","isPercentage","parseBackgroundSize","targetRatio","currentRatio","parseBackgroundPosition","backgroundSize","parseBackgroundRepeat","parseTextShadows","textShadow","results","shadows","TEXT_SHADOW_PROPERTY","TEXT_SHADOW_VALUES","offsetX","offsetY","blur","parseTransform","hasTransform","offset","parseBounds","removePx","asFloat","matrix","parseTransformMatrix","transform","parseMatrix","MATRIX_PROPERTY","inverseTransform","matrixInverse","getValue","tagName","selectionValue","placeholder","selectedIndex","text","matrix3d","d","det","M","TextContainer","PseudoElementContainer","StackingContext","range","renderQueue","background","rectangle","canvasBackground","visibile","createPseudoHideStyles","disableAnimations","flatten","getChildren","getPseudoElements","fontMetrics","calculateOverflowClips","isElement","createStackingContexts","sortStackingContexts","paint","renderIndex","asyncRenderer","appendToDOM","parseBorders","cssClip","hasParentClip","cleanDOM","isTextNode","asyncTimer","createStyles","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","hidePseudoElements","innerHTML","ELEMENT_NODE","getPseudoElement","after","toCamelCase","content","display","stripQuotes","isImage","pseudoNode","pseudoContainer","parentContainer","renderableNode","nonIgnoredElement","newStackingContext","hasOwnStacking","parentStack","getParentStack","contexts","isRootElement","hasOpacity","isPositionedForStacking","isBodyWithTransparentRoot","isPositioned","zIndex0","isInlineBlock","isFloating","sort","zIndexSort","parseTextBounds","textList","rangeBounds","getRangeBounds","replacementNode","splitText","getWrapperBounds","backupText","createRange","setStart","setEnd","getBoundingClientRect","ClearTransform","negativeZindex","negativeZIndex","descendantElements","descendantNonFloats","not","nonInlineNonPositionedDescendants","inlineLevel","nonPositionedFloats","inFlow","stackLevel0","hasText","positiveZindex","positiveZIndex","isStackingContext","restore","paintText","paintNode","setOpacity","save","setTransform","paintCheckbox","paintRadio","paintElement","renderBackground","getWidth","mask","renderShadows","renderBorders","imgContainer","renderImage","imageContainer","paintFormValue","radius","borderPoints","calculateCurvePoints","calculateBorders","checked","font","circleStroke","circle","ceil","message","textContent","applyTextTransform","characters","ucs2","wordRendering","letterRendering","noLetterSpacing","hasUnicode","getWords","character","fontVariantLigatures","fontShadow","clearShadow","renderTextDecoration","metrics","borderColorTransforms","inset","nodeBounds","getBorderRadiusData","side","colorTransform","pathArgs","parseBackgroundClip","pathBounds","borderSide","bx","by","bw","bh","drawSide","c1","c2","c3","c4","topLeftOuter","topLeftInner","topRightOuter","topRightInner","drawSidePath","topLeft","topRight","bottomRightOuter","bottomRightInner","bottomRight","bottomLeftOuter","bottomLeftInner","bottomLeft","borderArgs","parseCorner","getCurvePoints","r1","r2","kappa","sqrt","ox","oy","xm","ym","bezierCurve","borderRadius","tlh","tlv","trh","trv","brh","brv","blh","blv","topWidth","rightHeight","bottomWidth","leftHeight","subdivide","startControl","endControl","end","lerp","ab","bc","cd","abbc","bccd","dest","curveTo","curveToReversed","borderData","radius1","radius2","outer1","inner1","outer2","inner2","curve1","curve2","corner1","corner2","asInt","zIndex","nodeContainer","arrays","first","words","onWordBoundary","word","isWordBoundary","characterCode","XHR","decode64","proxyUrl","supportsCORS","XMLHttpRequest","createCallback","createProxyUrl","jsonp","response","proxyCount","ProxyURL","supportsCORSImage","cleanup","random","documentFromHTML","html","DOMParser","parseFromString","implementation","createHTMLDocument","ee","host","head","insertBefore","getHideClass","Renderer","paddingLeft","paddingTop","paddingRight","paddingBottom","renderBackgroundColor","renderBackgroundImage","shape","boxShadow","shadow","renderBorder","dash","setLineDash","path","strokeStyle","stroke","drawShape","backgroundImage","renderBackgroundRepeating","gradientImage","renderBackgroundGradient","repeat","backgroundRepeatShape","renderBackgroundRepeat","dpi","taintCtx","textBaseline","variables","setFillStyle","fillStyle","fillRect","beginPath","arc","PI","closePath","fill","strokeColor","parseShadow","propertyFilters","px","pxPropertyNames","info","drawShadow","shadowOffsetX","shadowOffsetY","shadowColor","shadowBlur","taints","sx","sy","sw","sh","dx","dy","dw","dh","shapes","hasEntries","borderClip","canvasBorderCCW","maskShape","point","rect","variant","setVariable","globalAlpha","translate","fillText","backgroundPosition","borderLeft","borderTop","createPattern","resizeImage","gradient","createLinearGradient","addColorStop","ownStacking","testRangeBounds","testCORS","testSVG","testElement","rangeHeight","selectNode","toDataURL","hasFabric","inlineFormatting","fabric","loadSVGFromString","createCanvas","removeContentType","objects","StaticCanvas","lowerCanvasEl","setWidth","setHeight","add","util","groupSVGElements","renderAll","atob","_native","XMLSerializer","serializeToString","parseSVGDocument","capitalize","p1","p2","base64","chars","encoded1","encoded2","encoded3","encoded4","byte1","byte2","byte3","clientRect","offsetParent","offsetLeft","whitespace","definition","prefix_i","block","mode","numParen","quote","appendResult","xhr","status","responseText","statusText","send","domain","factory","extendStatics","setPrototypeOf","p","__extends","__","__assign","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","done","__generator","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","Bounds","h","fromClientRect","parseDocumentSize","toCodePoints","codePoints","fromCodePoint","_i","codeUnits","lookup","Uint8Array","bufferLength","buffer","ArrayBuffer","bytes","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","view","Uint16Array","slice32","Uint32Array","createTrieFromBase64","view32","view16","headerLength","Trie","initialValue","errorValue","highStart","highValueIndex","ix","LETTER_NUMBER_MODIFIER","BK","CR","LF","CM","NL","WJ","ZW","GL","SP","ZWJ","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI","SA","XX","BREAK_MANDATORY","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","types","indicies","categories","classType","prev","isAdjacentWithSpaceIgnored","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","forbiddenBreaks","beforeIndex","afterIndex","prevIndex","cssFormattedClasses","wordBreak","_a","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","required","LineBreaker","lastEnd","nextIndex","TokenType","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","SPACE$1","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","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","isIdentifierStart","isNumberStart","stringToNumber","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","HASH_TOKEN","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","AT_KEYWORD_TOKEN","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","DELIM_TOKEN","unshift","digits","questionMarks","start_1","UNICODE_RANGE_TOKEN","endDigits","consumeUrlToken","FUNCTION_TOKEN","IDENT_TOKEN","URL_TOKEN","stringToken","STRING_TOKEN","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","endingCodePoint","consumeNumber","repr","DIMENSION_TOKEN","PERCENTAGE_TOKEN","NUMBER_TOKEN","hex","hexCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","isEndingTokenFor","functionToken","cssFunction","FUNCTION","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","DEG","GRAD","RAD","TURN","angle","isAngle","parseNamedSide","sideOrCorner","ident","deg","colorFunction","SUPPORTED_COLOR_FUNCTIONS","pack","COLORS","TRANSPARENT","asString","alpha","blue","green","red","getTokenColorValue","_b","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","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","PropertyDescriptorParsingType","BACKGROUND_CLIP","LIST","PADDING_BOX","CONTENT_BOX","BORDER_BOX","backgroundColor","TYPE_VALUE","format","parseColorStop","color$1","processColorStops","stops","lineLength","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","findCorner","closest","corners","stat","cx","cy","optimumDistance","optimumCorner","Infinity","calculateRadius","rx","ry","CSSRadialExtent","CLOSEST_SIDE","CSSRadialShape","CIRCLE","ELLIPSE","CLOSEST_CORNER","FARTHEST_SIDE","FARTHEST_CORNER","linearGradient","angle$1","firstToken","CSSImageType","LINEAR_GRADIENT","prefixLinearGradient","TEST_HEIGHT","testResponseType","responseType","isGreenPixel","testForeignObject","greenImageSrc","createForeignObjectSVG","loadSerializedSVG","xmlns","createElementNS","foreignObject","setAttributeNS","FEATURES","SUPPORT_RANGE_BOUNDS","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","from","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","Logger","enabled","debug","getTime","instances","destroy","getInstance","instance","CacheStorage","_caches","Cache","_link","_origin","setContext","_current","attachInstance","detachInstance","_options","_cache","has","isBlobImage","isRenderable","useProxy","_this","isInlineImage","isInlineBase64Image","reader_1","FileReader","addEventListener","readAsDataURL","timeout_1","ontimeout","INLINE_SVG","INLINE_BASE64","INLINE_IMG","webkitGradient","RADIAL_GRADIENT","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","acc","prefixRadialGradient","isLinearGradient","isRadialGradient","image_1","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundOrigin","BACKGROUND_REPEAT","backgroundRepeat","NO_REPEAT","REPEAT_X","REPEAT_Y","REPEAT","BACKGROUND_SIZE","isBackgroundSizeInfoToken","borderColorForSide","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","BORDER_STYLE","borderStyleForSide","IDENT_VALUE","NONE","SOLID","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","VALUE","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","FLOAT","float","LEFT","RIGHT","INLINE_START","INLINE_END","letterSpacing","LINE_BREAK","STRICT","NORMAL","TOKEN_VALUE","computeLineHeight","listStyleImage","LIST_STYLE_POSITION","listStylePosition","INSIDE","OUTSIDE","LIST_STYLE_TYPE","listStyleType","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","marginForSide","marginTop","marginRight","marginBottom","marginLeft","OVERFLOW","overflow","HIDDEN","SCROLL","AUTO","VISIBLE","OVERFLOW_WRAP","overflowWrap","BREAK_WORD","paddingForSide","TEXT_ALIGN","textAlign","CENTER","POSITION","RELATIVE","ABSOLUTE","FIXED","STICKY","STATIC","TEXT_TRANSFORM","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","b1","b2","_c","_d","_e","_f","_g","_h","a4","b4","_j","_k","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","VISIBILITY","COLLAPSE","WORD_BREAK","BREAK_ALL","KEEP_ALL","auto","order","textDecorationColor","textDecorationLine","line","accumulator","fontVariant","FONT_STYLE","fontStyle","OBLIQUE","ITALIC","contains","counterIncrement","increments","filtered","increment","counterReset","resets","reset","quotes","open_1","close_1","getQuote","depth","spread","CSSParsedDeclaration","declaration","overflowTuple","overflowX","overflowY","isVisible","isTransformed","isPositionedWithZIndex","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","length_1","value_1","ElementContainer","textNodes","elements","isHTMLElementNode","TextBounds","breakText","textBounds","breakWords","breaker","bk","transform$1","ImageElementContainer","_super","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","SelectElementContainer","TextareaElementContainer","parseColor","IFrameElementContainer","iframe","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","childNode","nextNode","isElementNode","createContainer","createsRealStackingContext","createsStackingContext","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","isSVGElementNode","isHTMLElement","isStyleElement","isScriptElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","createAdditiveCounter","symbols","fallback","suffix","createCounterText","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","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","cloneWindow","iframeLoad","iframeLoader","restoreNodeScroll","clonedReferenceElement","fonts","serializeDoctype","doctype","createElementClone","createCanvasClone","createStyleClone","loading","sheet","cssRules","rule","cssText","inlineImages","clonedCtx","styleBefore","styleAfter","resolvePseudoContent","PseudoElementType","BEFORE","ignoreElements","copyStyles","AFTER","copyCSSStyles","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","newClassName","baseValue","cloneIframeContainer","onreadystatechange","readyState","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","PathType","equalPath","transformPath","deltaX","deltaY","deltaW","deltaH","Vector","VECTOR","BezierCurve","BEZIER_CURVE","firstHalf","isBezierCurve","BoundCurves","factors","maxFactor","topLeftBorderBox","CORNER","TOP_LEFT","topRightBorderBox","TOP_RIGHT","bottomRightBorderBox","BOTTOM_RIGHT","bottomLeftBorderBox","BOTTOM_LEFT","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","effect","isClipEffect","isOpacityEffect","nonInlineLevel","zeroOrAutoZIndexOrTransformedOrOpacity","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getParentEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","createPathFromCurves","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_1","height_1","width_2","height_2","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","_data","_document","parseMetrics","MASK_OFFSET","_activeEffects","applyEffects","popEffect","applyEffect","renderStack","renderStackContent","renderNode","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","letters","letter","measureText","createFontStyle","renderTextNode","textShadows","renderReplacedElement","box","e_1","e_2","iframeRenderer","e_3","render","isTextInputElement","canvasTextAlign","_l","_m","_o","_p","paths","moveTo","lineTo","formatPath","bezierCurveTo","renderRepeat","pattern","_loop_1","this_1","e_4","gradient_1","top_1","radialGradient_1","midX","midY","invF","createRadialGradient","curvePoints","hasBackground","borders_1","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","ForeignObjectRenderer","loadSerializedSVG$1","parseColor$1","renderElement","instanceName","defaultResourceOptions","resourceOptions","defaultOptions","windowBounds","documentCloner","clonedElement","bgColor","defaultBackgroundColor","renderOptions","foreignObjectRendering","devicePixelRatio","makeMap","items","inline","closeSelf","removeDOCTYPE","isDocument","RegExp","$1","trimHtml","getScreenInfo","screen","html2json","customHandler","imageProp","wxDiscode","strDiscode","bufArray","imageUrls","tag","$screen","attrs","unary","tagType","pre","classStr","styleStr","imgUrl","urlToHttpUrl","styleAttrs","face","source","strNumDiscode","strGreeceDiscode","strcharacterDiscode","strOtherDiscode","startTag","endTag","empty","fillAttrs","HTMLParser","parseEndTag","pos","parseStartTag","rest","genAttr","escaped"],"mappings":"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AAqBA,eAArB;;AAEA,IAAIM,KAAK,GAAGH,GAAZ,C;;AAEeG,K;;;;;;;;;;;;AClwDf;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClHA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,aAAoB;;AAErC;AACA;AACA;AACA,YAAY,aAAoB;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA,iCAAiC;AACjC,uCAAuC,wBAAwB,EAAE;AACjE,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wCAAwC,EAAE;AAC1C;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,+BAA+B,oBAAoB,EAAE;AACrD;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS,qBAAqB;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD,iCAAiC,sBAAsB;AACvD;AACA,kBAAkB;AAClB,MAAM,IAAqC;AAC3C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAoB;AACtC;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,OAAO,UAAU,IAAqC;AACtD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,mBAAmB;AACtC,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA,qCAAqC;AACrC;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAEQ;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,qCAAqC,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,oCAAoC,yCAAyC,EAAE;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD,EAAE;AACtF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C,GAAG;AACH;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;;AAEA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,MAAM,EAEN;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC,uCAAuC;AACvC;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,4CAA4C,eAAe;AAC3D,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK,UAAU,KAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,gEAAgE;AACrG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,4BAA4B,+BAA+B;AAC3D,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C,kDAAkD;AAClD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,uFAAuF;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,+BAA+B;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,oBAAoB;AACxC,sBAAsB,4BAA4B;AAClD;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA,6CAA6C,4CAA4C;;AAEzF;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG,MAAM,EAGN;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK,2CAA2C,8BAA8B,EAAE;;AAEhF;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAqC;AACrD;AACA,oBAAoB,SAAI;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;;AAEpD;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB;AACpB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,oBAAoB,KAAqC;AACzD;AACA,MAAM,SAAE;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C,qBAAqB,+BAA+B;AACpD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,IAAqC;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,sCAAsC;AACtC,8C;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,0CAA0C,2BAA2B,EAAE;AACvE,KAAK;AACL;AACA,0CAA0C,4BAA4B,EAAE;AACxE,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,gFAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,gCAAgC,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA,WAAW,gFAAW;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,WAAW,gFAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;;AAE1C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,KAAK;AACL;AACA;AACA,UAAU,gFAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qDAAqD,EAAE,SAAS;AACtH;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"common/vendor.js","sourcesContent":["import Vue from 'vue';\n\nconst _toString = Object.prototype.toString;\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isFn (fn) {\n return typeof fn === 'function'\n}\n\nfunction isStr (str) {\n return typeof str === 'string'\n}\n\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction noop () {}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n const cache = Object.create(null);\n return function cachedFn (str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str))\n }\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cached((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n});\n\nconst HOOKS = [\n 'invoke',\n 'success',\n 'fail',\n 'complete',\n 'returnValue'\n];\n\nconst globalInterceptors = {};\nconst scopedInterceptors = {};\n\nfunction mergeHook (parentVal, childVal) {\n const res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n const res = [];\n for (let i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nfunction removeHook (hooks, hook) {\n const index = hooks.indexOf(hook);\n if (index !== -1) {\n hooks.splice(index, 1);\n }\n}\n\nfunction mergeInterceptorHook (interceptor, option) {\n Object.keys(option).forEach(hook => {\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\n interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\n }\n });\n}\n\nfunction removeInterceptorHook (interceptor, option) {\n if (!interceptor || !option) {\n return\n }\n Object.keys(option).forEach(hook => {\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\n removeHook(interceptor[hook], option[hook]);\n }\n });\n}\n\nfunction addInterceptor (method, option) {\n if (typeof method === 'string' && isPlainObject(option)) {\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\n } else if (isPlainObject(method)) {\n mergeInterceptorHook(globalInterceptors, method);\n }\n}\n\nfunction removeInterceptor (method, option) {\n if (typeof method === 'string') {\n if (isPlainObject(option)) {\n removeInterceptorHook(scopedInterceptors[method], option);\n } else {\n delete scopedInterceptors[method];\n }\n } else if (isPlainObject(method)) {\n removeInterceptorHook(globalInterceptors, method);\n }\n}\n\nfunction wrapperHook (hook) {\n return function (data) {\n return hook(data) || data\n }\n}\n\nfunction isPromise (obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\n}\n\nfunction queue (hooks, data) {\n let promise = false;\n for (let i = 0; i < hooks.length; i++) {\n const hook = hooks[i];\n if (promise) {\n promise = Promise.resolve(wrapperHook(hook));\n } else {\n const res = hook(data);\n if (isPromise(res)) {\n promise = Promise.resolve(res);\n }\n if (res === false) {\n return {\n then () {}\n }\n }\n }\n }\n return promise || {\n then (callback) {\n return callback(data)\n }\n }\n}\n\nfunction wrapperOptions (interceptor, options = {}) {\n ['success', 'fail', 'complete'].forEach(name => {\n if (Array.isArray(interceptor[name])) {\n const oldCallback = options[name];\n options[name] = function callbackInterceptor (res) {\n queue(interceptor[name], res).then((res) => {\n /* eslint-disable no-mixed-operators */\n return isFn(oldCallback) && oldCallback(res) || res\n });\n };\n }\n });\n return options\n}\n\nfunction wrapperReturnValue (method, returnValue) {\n const returnValueHooks = [];\n if (Array.isArray(globalInterceptors.returnValue)) {\n returnValueHooks.push(...globalInterceptors.returnValue);\n }\n const interceptor = scopedInterceptors[method];\n if (interceptor && Array.isArray(interceptor.returnValue)) {\n returnValueHooks.push(...interceptor.returnValue);\n }\n returnValueHooks.forEach(hook => {\n returnValue = hook(returnValue) || returnValue;\n });\n return returnValue\n}\n\nfunction getApiInterceptorHooks (method) {\n const interceptor = Object.create(null);\n Object.keys(globalInterceptors).forEach(hook => {\n if (hook !== 'returnValue') {\n interceptor[hook] = globalInterceptors[hook].slice();\n }\n });\n const scopedInterceptor = scopedInterceptors[method];\n if (scopedInterceptor) {\n Object.keys(scopedInterceptor).forEach(hook => {\n if (hook !== 'returnValue') {\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\n }\n });\n }\n return interceptor\n}\n\nfunction invokeApi (method, api, options, ...params) {\n const interceptor = getApiInterceptorHooks(method);\n if (interceptor && Object.keys(interceptor).length) {\n if (Array.isArray(interceptor.invoke)) {\n const res = queue(interceptor.invoke, options);\n return res.then((options) => {\n return api(wrapperOptions(interceptor, options), ...params)\n })\n } else {\n return api(wrapperOptions(interceptor, options), ...params)\n }\n }\n return api(options, ...params)\n}\n\nconst promiseInterceptor = {\n returnValue (res) {\n if (!isPromise(res)) {\n return res\n }\n return res.then(res => {\n return res[1]\n }).catch(res => {\n return res[0]\n })\n }\n};\n\nconst SYNC_API_RE =\n /^\\$|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/;\n\nconst CONTEXT_API_RE = /^create|Manager$/;\n\n// Context例外情况\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\n\n// 同步例外情况\nconst ASYNC_API = ['createBLEConnection'];\n\nconst CALLBACK_API_RE = /^on|^off/;\n\nfunction isContextApi (name) {\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\n}\nfunction isSyncApi (name) {\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\n}\n\nfunction isCallbackApi (name) {\n return CALLBACK_API_RE.test(name) && name !== 'onPush'\n}\n\nfunction handlePromise (promise) {\n return promise.then(data => {\n return [null, data]\n })\n .catch(err => [err])\n}\n\nfunction shouldPromise (name) {\n if (\n isContextApi(name) ||\n isSyncApi(name) ||\n isCallbackApi(name)\n ) {\n return false\n }\n return true\n}\n\n/* eslint-disable no-extend-native */\nif (!Promise.prototype.finally) {\n Promise.prototype.finally = function (callback) {\n const promise = this.constructor;\n return this.then(\n value => promise.resolve(callback()).then(() => value),\n reason => promise.resolve(callback()).then(() => {\n throw reason\n })\n )\n };\n}\n\nfunction promisify (name, api) {\n if (!shouldPromise(name)) {\n return api\n }\n return function promiseApi (options = {}, ...params) {\n if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\n return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\n }\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\n invokeApi(name, api, Object.assign({}, options, {\n success: resolve,\n fail: reject\n }), ...params);\n })))\n }\n}\n\nconst EPS = 1e-4;\nconst BASE_DEVICE_WIDTH = 750;\nlet isIOS = false;\nlet deviceWidth = 0;\nlet deviceDPR = 0;\n\nfunction checkDeviceWidth () {\n const {\n platform,\n pixelRatio,\n windowWidth\n } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\n\n deviceWidth = windowWidth;\n deviceDPR = pixelRatio;\n isIOS = platform === 'ios';\n}\n\nfunction upx2px (number, newDeviceWidth) {\n if (deviceWidth === 0) {\n checkDeviceWidth();\n }\n\n number = Number(number);\n if (number === 0) {\n return 0\n }\n let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\n if (result < 0) {\n result = -result;\n }\n result = Math.floor(result + EPS);\n if (result === 0) {\n if (deviceDPR === 1 || !isIOS) {\n result = 1;\n } else {\n result = 0.5;\n }\n }\n return number < 0 ? -result : result\n}\n\nconst interceptors = {\n promiseInterceptor\n};\n\nvar baseApi = /*#__PURE__*/Object.freeze({\n __proto__: null,\n upx2px: upx2px,\n addInterceptor: addInterceptor,\n removeInterceptor: removeInterceptor,\n interceptors: interceptors\n});\n\nclass EventChannel {\n constructor (id, events) {\n this.id = id;\n this.listener = {};\n this.emitCache = {};\n if (events) {\n Object.keys(events).forEach(name => {\n this.on(name, events[name]);\n });\n }\n }\n\n emit (eventName, ...args) {\n const fns = this.listener[eventName];\n if (!fns) {\n return (this.emitCache[eventName] || (this.emitCache[eventName] = [])).push(args)\n }\n fns.forEach(opt => {\n opt.fn.apply(opt.fn, args);\n });\n this.listener[eventName] = fns.filter(opt => opt.type !== 'once');\n }\n\n on (eventName, fn) {\n this._addListener(eventName, 'on', fn);\n this._clearCache(eventName);\n }\n\n once (eventName, fn) {\n this._addListener(eventName, 'once', fn);\n this._clearCache(eventName);\n }\n\n off (eventName, fn) {\n const fns = this.listener[eventName];\n if (!fns) {\n return\n }\n if (fn) {\n for (let i = 0; i < fns.length;) {\n if (fns[i].fn === fn) {\n fns.splice(i, 1);\n i--;\n }\n i++;\n }\n } else {\n delete this.listener[eventName];\n }\n }\n\n _clearCache (eventName) {\n const cacheArgs = this.emitCache[eventName];\n if (cacheArgs) {\n for (; cacheArgs.length > 0;) {\n this.emit.apply(this, [eventName].concat(cacheArgs.shift()));\n }\n }\n }\n\n _addListener (eventName, type, fn) {\n (this.listener[eventName] || (this.listener[eventName] = [])).push({\n fn,\n type\n });\n }\n}\n\nconst eventChannels = {};\n\nconst eventChannelStack = [];\n\nlet id = 0;\n\nfunction initEventChannel (events, cache = true) {\n id++;\n const eventChannel = new EventChannel(id, events);\n if (cache) {\n eventChannels[id] = eventChannel;\n eventChannelStack.push(eventChannel);\n }\n return eventChannel\n}\n\nfunction getEventChannel (id) {\n if (id) {\n const eventChannel = eventChannels[id];\n delete eventChannels[id];\n return eventChannel\n }\n return eventChannelStack.shift()\n}\n\nvar navigateTo = {\n args (fromArgs, toArgs) {\n const id = initEventChannel(fromArgs.events).id;\n if (fromArgs.url) {\n fromArgs.url = fromArgs.url + (fromArgs.url.indexOf('?') === -1 ? '?' : '&') + '__id__=' + id;\n }\n },\n returnValue (fromRes, toRes) {\n fromRes.eventChannel = getEventChannel();\n }\n};\n\nfunction findExistsPageIndex (url) {\n const pages = getCurrentPages();\n let len = pages.length;\n while (len--) {\n const page = pages[len];\n if (page.$page && page.$page.fullPath === url) {\n return len\n }\n }\n return -1\n}\n\nvar redirectTo = {\n name (fromArgs) {\n if (fromArgs.exists === 'back' && fromArgs.delta) {\n return 'navigateBack'\n }\n return 'redirectTo'\n },\n args (fromArgs) {\n if (fromArgs.exists === 'back' && fromArgs.url) {\n const existsPageIndex = findExistsPageIndex(fromArgs.url);\n if (existsPageIndex !== -1) {\n const delta = getCurrentPages().length - 1 - existsPageIndex;\n if (delta > 0) {\n fromArgs.delta = delta;\n }\n }\n }\n }\n};\n\nvar previewImage = {\n args (fromArgs) {\n let currentIndex = parseInt(fromArgs.current);\n if (isNaN(currentIndex)) {\n return\n }\n const urls = fromArgs.urls;\n if (!Array.isArray(urls)) {\n return\n }\n const len = urls.length;\n if (!len) {\n return\n }\n if (currentIndex < 0) {\n currentIndex = 0;\n } else if (currentIndex >= len) {\n currentIndex = len - 1;\n }\n if (currentIndex > 0) {\n fromArgs.current = urls[currentIndex];\n fromArgs.urls = urls.filter(\n (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\n );\n } else {\n fromArgs.current = urls[0];\n }\n return {\n indicator: false,\n loop: false\n }\n }\n};\n\nfunction addSafeAreaInsets (result) {\n if (result.safeArea) {\n const safeArea = result.safeArea;\n result.safeAreaInsets = {\n top: safeArea.top,\n left: safeArea.left,\n right: result.windowWidth - safeArea.right,\n bottom: result.windowHeight - safeArea.bottom\n };\n }\n}\nconst protocols = {\n redirectTo,\n navigateTo,\n previewImage,\n getSystemInfo: {\n returnValue: addSafeAreaInsets\n },\n getSystemInfoSync: {\n returnValue: addSafeAreaInsets\n }\n};\nconst todos = [\n 'vibrate',\n 'preloadPage',\n 'unPreloadPage',\n 'loadSubPackage'\n];\nconst canIUses = [];\n\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\n\nfunction processCallback (methodName, method, returnValue) {\n return function (res) {\n return method(processReturnValue(methodName, res, returnValue))\n }\n}\n\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\n if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\n const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\n if (isFn(argsOption)) {\n argsOption = argsOption(fromArgs, toArgs) || {};\n }\n for (const key in fromArgs) {\n if (hasOwn(argsOption, key)) {\n let keyOption = argsOption[key];\n if (isFn(keyOption)) {\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\n }\n if (!keyOption) { // 不支持的参数\n console.warn(`微信小程序 ${methodName}暂不支持${key}`);\n } else if (isStr(keyOption)) { // 重写参数 key\n toArgs[keyOption] = fromArgs[key];\n } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\n }\n } else if (CALLBACKS.indexOf(key) !== -1) {\n if (isFn(fromArgs[key])) {\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\n }\n } else {\n if (!keepFromArgs) {\n toArgs[key] = fromArgs[key];\n }\n }\n }\n return toArgs\n } else if (isFn(fromArgs)) {\n fromArgs = processCallback(methodName, fromArgs, returnValue);\n }\n return fromArgs\n}\n\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\n if (isFn(protocols.returnValue)) { // 处理通用 returnValue\n res = protocols.returnValue(methodName, res);\n }\n return processArgs(methodName, res, returnValue, {}, keepReturnValue)\n}\n\nfunction wrapper (methodName, method) {\n if (hasOwn(protocols, methodName)) {\n const protocol = protocols[methodName];\n if (!protocol) { // 暂不支持的 api\n return function () {\n console.error(`微信小程序 暂不支持${methodName}`);\n }\n }\n return function (arg1, arg2) { // 目前 api 最多两个参数\n let options = protocol;\n if (isFn(protocol)) {\n options = protocol(arg1);\n }\n\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\n\n const args = [arg1];\n if (typeof arg2 !== 'undefined') {\n args.push(arg2);\n }\n if (isFn(options.name)) {\n methodName = options.name(arg1);\n } else if (isStr(options.name)) {\n methodName = options.name;\n }\n const returnValue = wx[methodName].apply(wx, args);\n if (isSyncApi(methodName)) { // 同步 api\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\n }\n return returnValue\n }\n }\n return method\n}\n\nconst todoApis = Object.create(null);\n\nconst TODOS = [\n 'onTabBarMidButtonTap',\n 'subscribePush',\n 'unsubscribePush',\n 'onPush',\n 'offPush',\n 'share'\n];\n\nfunction createTodoApi (name) {\n return function todoApi ({\n fail,\n complete\n }) {\n const res = {\n errMsg: `${name}:fail:暂不支持 ${name} 方法`\n };\n isFn(fail) && fail(res);\n isFn(complete) && complete(res);\n }\n}\n\nTODOS.forEach(function (name) {\n todoApis[name] = createTodoApi(name);\n});\n\nvar providers = {\n oauth: ['weixin'],\n share: ['weixin'],\n payment: ['wxpay'],\n push: ['weixin']\n};\n\nfunction getProvider ({\n service,\n success,\n fail,\n complete\n}) {\n let res = false;\n if (providers[service]) {\n res = {\n errMsg: 'getProvider:ok',\n service,\n provider: providers[service]\n };\n isFn(success) && success(res);\n } else {\n res = {\n errMsg: 'getProvider:fail:服务[' + service + ']不存在'\n };\n isFn(fail) && fail(res);\n }\n isFn(complete) && complete(res);\n}\n\nvar extraApi = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getProvider: getProvider\n});\n\nconst getEmitter = (function () {\n let Emitter;\n return function getUniEmitter () {\n if (!Emitter) {\n Emitter = new Vue();\n }\n return Emitter\n }\n})();\n\nfunction apply (ctx, method, args) {\n return ctx[method].apply(ctx, args)\n}\n\nfunction $on () {\n return apply(getEmitter(), '$on', [...arguments])\n}\nfunction $off () {\n return apply(getEmitter(), '$off', [...arguments])\n}\nfunction $once () {\n return apply(getEmitter(), '$once', [...arguments])\n}\nfunction $emit () {\n return apply(getEmitter(), '$emit', [...arguments])\n}\n\nvar eventApi = /*#__PURE__*/Object.freeze({\n __proto__: null,\n $on: $on,\n $off: $off,\n $once: $once,\n $emit: $emit\n});\n\nvar api = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst MPPage = Page;\nconst MPComponent = Component;\n\nconst customizeRE = /:/g;\n\nconst customize = cached((str) => {\n return camelize(str.replace(customizeRE, '-'))\n});\n\nfunction initTriggerEvent (mpInstance) {\n {\n if (!wx.canIUse('nextTick')) {\n return\n }\n }\n const oldTriggerEvent = mpInstance.triggerEvent;\n mpInstance.triggerEvent = function (event, ...args) {\n return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])\n };\n}\n\nfunction initHook (name, options) {\n const oldHook = options[name];\n if (!oldHook) {\n options[name] = function () {\n initTriggerEvent(this);\n };\n } else {\n options[name] = function (...args) {\n initTriggerEvent(this);\n return oldHook.apply(this, args)\n };\n }\n}\n\nPage = function (options = {}) {\n initHook('onLoad', options);\n return MPPage(options)\n};\n\nComponent = function (options = {}) {\n initHook('created', options);\n return MPComponent(options)\n};\n\nconst PAGE_EVENT_HOOKS = [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onAddToFavorites',\n 'onShareTimeline',\n 'onShareAppMessage',\n 'onPageScroll',\n 'onResize',\n 'onTabItemTap'\n];\n\nfunction initMocks (vm, mocks) {\n const mpInstance = vm.$mp[vm.mpType];\n mocks.forEach(mock => {\n if (hasOwn(mpInstance, mock)) {\n vm[mock] = mpInstance[mock];\n }\n });\n}\n\nfunction hasHook (hook, vueOptions) {\n if (!vueOptions) {\n return true\n }\n\n if (Vue.options && Array.isArray(Vue.options[hook])) {\n return true\n }\n\n vueOptions = vueOptions.default || vueOptions;\n\n if (isFn(vueOptions)) {\n if (isFn(vueOptions.extendOptions[hook])) {\n return true\n }\n if (vueOptions.super &&\n vueOptions.super.options &&\n Array.isArray(vueOptions.super.options[hook])) {\n return true\n }\n return false\n }\n\n if (isFn(vueOptions[hook])) {\n return true\n }\n const mixins = vueOptions.mixins;\n if (Array.isArray(mixins)) {\n return !!mixins.find(mixin => hasHook(hook, mixin))\n }\n}\n\nfunction initHooks (mpOptions, hooks, vueOptions) {\n hooks.forEach(hook => {\n if (hasHook(hook, vueOptions)) {\n mpOptions[hook] = function (args) {\n return this.$vm && this.$vm.__call_hook(hook, args)\n };\n }\n });\n}\n\nfunction initVueComponent (Vue, vueOptions) {\n vueOptions = vueOptions.default || vueOptions;\n let VueComponent;\n if (isFn(vueOptions)) {\n VueComponent = vueOptions;\n } else {\n VueComponent = Vue.extend(vueOptions);\n }\n vueOptions = VueComponent.options;\n return [VueComponent, vueOptions]\n}\n\nfunction initSlots (vm, vueSlots) {\n if (Array.isArray(vueSlots) && vueSlots.length) {\n const $slots = Object.create(null);\n vueSlots.forEach(slotName => {\n $slots[slotName] = true;\n });\n vm.$scopedSlots = vm.$slots = $slots;\n }\n}\n\nfunction initVueIds (vueIds, mpInstance) {\n vueIds = (vueIds || '').split(',');\n const len = vueIds.length;\n\n if (len === 1) {\n mpInstance._$vueId = vueIds[0];\n } else if (len === 2) {\n mpInstance._$vueId = vueIds[0];\n mpInstance._$vuePid = vueIds[1];\n }\n}\n\nfunction initData (vueOptions, context) {\n let data = vueOptions.data || {};\n const methods = vueOptions.methods || {};\n\n if (typeof data === 'function') {\n try {\n data = data.call(context); // 支持 Vue.prototype 上挂的数据\n } catch (e) {\n if (process.env.VUE_APP_DEBUG) {\n console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\n }\n }\n } else {\n try {\n // 对 data 格式化\n data = JSON.parse(JSON.stringify(data));\n } catch (e) {}\n }\n\n if (!isPlainObject(data)) {\n data = {};\n }\n\n Object.keys(methods).forEach(methodName => {\n if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\n data[methodName] = methods[methodName];\n }\n });\n\n return data\n}\n\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\n\nfunction createObserver (name) {\n return function observer (newVal, oldVal) {\n if (this.$vm) {\n this.$vm[name] = newVal; // 为了触发其他非 render watcher\n }\n }\n}\n\nfunction initBehaviors (vueOptions, initBehavior) {\n const vueBehaviors = vueOptions.behaviors;\n const vueExtends = vueOptions.extends;\n const vueMixins = vueOptions.mixins;\n\n let vueProps = vueOptions.props;\n\n if (!vueProps) {\n vueOptions.props = vueProps = [];\n }\n\n const behaviors = [];\n if (Array.isArray(vueBehaviors)) {\n vueBehaviors.forEach(behavior => {\n behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\n if (behavior === 'uni://form-field') {\n if (Array.isArray(vueProps)) {\n vueProps.push('name');\n vueProps.push('value');\n } else {\n vueProps.name = {\n type: String,\n default: ''\n };\n vueProps.value = {\n type: [String, Number, Boolean, Array, Object, Date],\n default: ''\n };\n }\n }\n });\n }\n if (isPlainObject(vueExtends) && vueExtends.props) {\n behaviors.push(\n initBehavior({\n properties: initProperties(vueExtends.props, true)\n })\n );\n }\n if (Array.isArray(vueMixins)) {\n vueMixins.forEach(vueMixin => {\n if (isPlainObject(vueMixin) && vueMixin.props) {\n behaviors.push(\n initBehavior({\n properties: initProperties(vueMixin.props, true)\n })\n );\n }\n });\n }\n return behaviors\n}\n\nfunction parsePropType (key, type, defaultValue, file) {\n // [String]=>String\n if (Array.isArray(type) && type.length === 1) {\n return type[0]\n }\n return type\n}\n\nfunction initProperties (props, isBehavior = false, file = '') {\n const properties = {};\n if (!isBehavior) {\n properties.vueId = {\n type: String,\n value: ''\n };\n // 用于字节跳动小程序模拟抽象节点\n properties.generic = {\n type: Object,\n value: null\n };\n properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\n type: null,\n value: [],\n observer: function (newVal, oldVal) {\n const $slots = Object.create(null);\n newVal.forEach(slotName => {\n $slots[slotName] = true;\n });\n this.setData({\n $slots\n });\n }\n };\n }\n if (Array.isArray(props)) { // ['title']\n props.forEach(key => {\n properties[key] = {\n type: null,\n observer: createObserver(key)\n };\n });\n } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\n Object.keys(props).forEach(key => {\n const opts = props[key];\n if (isPlainObject(opts)) { // title:{type:String,default:''}\n let value = opts.default;\n if (isFn(value)) {\n value = value();\n }\n\n opts.type = parsePropType(key, opts.type);\n\n properties[key] = {\n type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\n value,\n observer: createObserver(key)\n };\n } else { // content:String\n const type = parsePropType(key, opts);\n properties[key] = {\n type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\n observer: createObserver(key)\n };\n }\n });\n }\n return properties\n}\n\nfunction wrapper$1 (event) {\n // TODO 又得兼容 mpvue 的 mp 对象\n try {\n event.mp = JSON.parse(JSON.stringify(event));\n } catch (e) {}\n\n event.stopPropagation = noop;\n event.preventDefault = noop;\n\n event.target = event.target || {};\n\n if (!hasOwn(event, 'detail')) {\n event.detail = {};\n }\n\n if (hasOwn(event, 'markerId')) {\n event.detail = typeof event.detail === 'object' ? event.detail : {};\n event.detail.markerId = event.markerId;\n }\n\n if (isPlainObject(event.detail)) {\n event.target = Object.assign({}, event.target, event.detail);\n }\n\n return event\n}\n\nfunction getExtraValue (vm, dataPathsArray) {\n let context = vm;\n dataPathsArray.forEach(dataPathArray => {\n const dataPath = dataPathArray[0];\n const value = dataPathArray[2];\n if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\n const propPath = dataPathArray[1];\n const valuePath = dataPathArray[3];\n\n let vFor;\n if (Number.isInteger(dataPath)) {\n vFor = dataPath;\n } else if (!dataPath) {\n vFor = context;\n } else if (typeof dataPath === 'string' && dataPath) {\n if (dataPath.indexOf('#s#') === 0) {\n vFor = dataPath.substr(3);\n } else {\n vFor = vm.__get_value(dataPath, context);\n }\n }\n\n if (Number.isInteger(vFor)) {\n context = value;\n } else if (!propPath) {\n context = vFor[value];\n } else {\n if (Array.isArray(vFor)) {\n context = vFor.find(vForItem => {\n return vm.__get_value(propPath, vForItem) === value\n });\n } else if (isPlainObject(vFor)) {\n context = Object.keys(vFor).find(vForKey => {\n return vm.__get_value(propPath, vFor[vForKey]) === value\n });\n } else {\n console.error('v-for 暂不支持循环数据:', vFor);\n }\n }\n\n if (valuePath) {\n context = vm.__get_value(valuePath, context);\n }\n }\n });\n return context\n}\n\nfunction processEventExtra (vm, extra, event) {\n const extraObj = {};\n\n if (Array.isArray(extra) && extra.length) {\n /**\n *[\n * ['data.items', 'data.id', item.data.id],\n * ['metas', 'id', meta.id]\n *],\n *[\n * ['data.items', 'data.id', item.data.id],\n * ['metas', 'id', meta.id]\n *],\n *'test'\n */\n extra.forEach((dataPath, index) => {\n if (typeof dataPath === 'string') {\n if (!dataPath) { // model,prop.sync\n extraObj['$' + index] = vm;\n } else {\n if (dataPath === '$event') { // $event\n extraObj['$' + index] = event;\n } else if (dataPath === 'arguments') {\n if (event.detail && event.detail.__args__) {\n extraObj['$' + index] = event.detail.__args__;\n } else {\n extraObj['$' + index] = [event];\n }\n } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\n extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\n } else {\n extraObj['$' + index] = vm.__get_value(dataPath);\n }\n }\n } else {\n extraObj['$' + index] = getExtraValue(vm, dataPath);\n }\n });\n }\n\n return extraObj\n}\n\nfunction getObjByArray (arr) {\n const obj = {};\n for (let i = 1; i < arr.length; i++) {\n const element = arr[i];\n obj[element[0]] = element[1];\n }\n return obj\n}\n\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\n let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\n if (isCustom) { // 自定义事件\n isCustomMPEvent = event.currentTarget &&\n event.currentTarget.dataset &&\n event.currentTarget.dataset.comType === 'wx';\n if (!args.length) { // 无参数,直接传入 event 或 detail 数组\n if (isCustomMPEvent) {\n return [event]\n }\n return event.detail.__args__ || event.detail\n }\n }\n\n const extraObj = processEventExtra(vm, extra, event);\n\n const ret = [];\n args.forEach(arg => {\n if (arg === '$event') {\n if (methodName === '__set_model' && !isCustom) { // input v-model value\n ret.push(event.target.value);\n } else {\n if (isCustom && !isCustomMPEvent) {\n ret.push(event.detail.__args__[0]);\n } else { // wxcomponent 组件或内置组件\n ret.push(event);\n }\n }\n } else {\n if (Array.isArray(arg) && arg[0] === 'o') {\n ret.push(getObjByArray(arg));\n } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\n ret.push(extraObj[arg]);\n } else {\n ret.push(arg);\n }\n }\n });\n\n return ret\n}\n\nconst ONCE = '~';\nconst CUSTOM = '^';\n\nfunction isMatchEventType (eventType, optType) {\n return (eventType === optType) ||\n (\n optType === 'regionchange' &&\n (\n eventType === 'begin' ||\n eventType === 'end'\n )\n )\n}\n\nfunction getContextVm (vm) {\n let $parent = vm.$parent;\n // 父组件是 scoped slots 或者其他自定义组件时继续查找\n while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\n $parent = $parent.$parent;\n }\n return $parent && $parent.$parent\n}\n\nfunction handleEvent (event) {\n event = wrapper$1(event);\n\n // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\n const dataset = (event.currentTarget || event.target).dataset;\n if (!dataset) {\n return console.warn('事件信息不存在')\n }\n const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\n if (!eventOpts) {\n return console.warn('事件信息不存在')\n }\n\n // [['handle',[1,2,a]],['handle1',[1,2,a]]]\n const eventType = event.type;\n\n const ret = [];\n\n eventOpts.forEach(eventOpt => {\n let type = eventOpt[0];\n const eventsArray = eventOpt[1];\n\n const isCustom = type.charAt(0) === CUSTOM;\n type = isCustom ? type.slice(1) : type;\n const isOnce = type.charAt(0) === ONCE;\n type = isOnce ? type.slice(1) : type;\n\n if (eventsArray && isMatchEventType(eventType, type)) {\n eventsArray.forEach(eventArray => {\n const methodName = eventArray[0];\n if (methodName) {\n let handlerCtx = this.$vm;\n if (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\n handlerCtx = getContextVm(handlerCtx) || handlerCtx;\n }\n if (methodName === '$emit') {\n handlerCtx.$emit.apply(handlerCtx,\n processEventArgs(\n this.$vm,\n event,\n eventArray[1],\n eventArray[2],\n isCustom,\n methodName\n ));\n return\n }\n const handler = handlerCtx[methodName];\n if (!isFn(handler)) {\n throw new Error(` _vm.${methodName} is not a function`)\n }\n if (isOnce) {\n if (handler.once) {\n return\n }\n handler.once = true;\n }\n const params = processEventArgs(\n this.$vm,\n event,\n eventArray[1],\n eventArray[2],\n isCustom,\n methodName\n );\n // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\n // eslint-disable-next-line no-sparse-arrays\n ret.push(handler.apply(handlerCtx, (Array.isArray(params) ? params : []).concat([, , , , , , , , , , event])));\n }\n });\n }\n });\n\n if (\n eventType === 'input' &&\n ret.length === 1 &&\n typeof ret[0] !== 'undefined'\n ) {\n return ret[0]\n }\n}\n\nconst hooks = [\n 'onShow',\n 'onHide',\n 'onError',\n 'onPageNotFound',\n 'onThemeChange',\n 'onUnhandledRejection'\n];\n\nfunction parseBaseApp (vm, {\n mocks,\n initRefs\n}) {\n if (vm.$options.store) {\n Vue.prototype.$store = vm.$options.store;\n }\n\n Vue.prototype.mpHost = \"mp-weixin\";\n\n Vue.mixin({\n beforeCreate () {\n if (!this.$options.mpType) {\n return\n }\n\n this.mpType = this.$options.mpType;\n\n this.$mp = {\n data: {},\n [this.mpType]: this.$options.mpInstance\n };\n\n this.$scope = this.$options.mpInstance;\n\n delete this.$options.mpType;\n delete this.$options.mpInstance;\n\n if (this.mpType !== 'app') {\n initRefs(this);\n initMocks(this, mocks);\n }\n }\n });\n\n const appOptions = {\n onLaunch (args) {\n if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\n return\n }\n {\n if (!wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\n console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\n }\n }\n\n this.$vm = vm;\n\n this.$vm.$mp = {\n app: this\n };\n\n this.$vm.$scope = this;\n // vm 上也挂载 globalData\n this.$vm.globalData = this.globalData;\n\n this.$vm._isMounted = true;\n this.$vm.__call_hook('mounted', args);\n\n this.$vm.__call_hook('onLaunch', args);\n }\n };\n\n // 兼容旧版本 globalData\n appOptions.globalData = vm.$options.globalData || {};\n // 将 methods 中的方法挂在 getApp() 中\n const methods = vm.$options.methods;\n if (methods) {\n Object.keys(methods).forEach(name => {\n appOptions[name] = methods[name];\n });\n }\n\n initHooks(appOptions, hooks);\n\n return appOptions\n}\n\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\n\nfunction findVmByVueId (vm, vuePid) {\n const $children = vm.$children;\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\n for (let i = $children.length - 1; i >= 0; i--) {\n const childVm = $children[i];\n if (childVm.$scope._$vueId === vuePid) {\n return childVm\n }\n }\n // 反向递归查找\n let parentVm;\n for (let i = $children.length - 1; i >= 0; i--) {\n parentVm = findVmByVueId($children[i], vuePid);\n if (parentVm) {\n return parentVm\n }\n }\n}\n\nfunction initBehavior (options) {\n return Behavior(options)\n}\n\nfunction isPage () {\n return !!this.route\n}\n\nfunction initRelation (detail) {\n this.triggerEvent('__l', detail);\n}\n\nfunction initRefs (vm) {\n const mpInstance = vm.$scope;\n Object.defineProperty(vm, '$refs', {\n get () {\n const $refs = {};\n const components = mpInstance.selectAllComponents('.vue-ref');\n components.forEach(component => {\n const ref = component.dataset.ref;\n $refs[ref] = component.$vm || component;\n });\n const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');\n forComponents.forEach(component => {\n const ref = component.dataset.ref;\n if (!$refs[ref]) {\n $refs[ref] = [];\n }\n $refs[ref].push(component.$vm || component);\n });\n return $refs\n }\n });\n}\n\nfunction handleLink (event) {\n const {\n vuePid,\n vueOptions\n } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\n\n let parentVm;\n\n if (vuePid) {\n parentVm = findVmByVueId(this.$vm, vuePid);\n }\n\n if (!parentVm) {\n parentVm = this.$vm;\n }\n\n vueOptions.parent = parentVm;\n}\n\nfunction parseApp (vm) {\n return parseBaseApp(vm, {\n mocks,\n initRefs\n })\n}\n\nfunction createApp (vm) {\n Vue.prototype.getOpenerEventChannel = function () {\n if (!this.__eventChannel__) {\n this.__eventChannel__ = new EventChannel();\n }\n return this.__eventChannel__\n };\n const callHook = Vue.prototype.__call_hook;\n Vue.prototype.__call_hook = function (hook, args) {\n if (hook === 'onLoad' && args && args.__id__) {\n this.__eventChannel__ = getEventChannel(args.__id__);\n delete args.__id__;\n }\n return callHook.call(this, hook, args)\n };\n App(parseApp(vm));\n return vm\n}\n\nconst encodeReserveRE = /[!'()*]/g;\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\nconst commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nconst encode = str => encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ',');\n\nfunction stringifyQuery (obj, encodeStr = encode) {\n const res = obj ? Object.keys(obj).map(key => {\n const val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encodeStr(key)\n }\n\n if (Array.isArray(val)) {\n const result = [];\n val.forEach(val2 => {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encodeStr(key));\n } else {\n result.push(encodeStr(key) + '=' + encodeStr(val2));\n }\n });\n return result.join('&')\n }\n\n return encodeStr(key) + '=' + encodeStr(val)\n }).filter(x => x.length > 0).join('&') : null;\n return res ? `?${res}` : ''\n}\n\nfunction parseBaseComponent (vueComponentOptions, {\n isPage,\n initRelation\n} = {}) {\n const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\n\n const options = {\n multipleSlots: true,\n addGlobalClass: true,\n ...(vueOptions.options || {})\n };\n\n {\n // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\n if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\n Object.assign(options, vueOptions['mp-weixin'].options);\n }\n }\n\n const componentOptions = {\n options,\n data: initData(vueOptions, Vue.prototype),\n behaviors: initBehaviors(vueOptions, initBehavior),\n properties: initProperties(vueOptions.props, false, vueOptions.__file),\n lifetimes: {\n attached () {\n const properties = this.properties;\n\n const options = {\n mpType: isPage.call(this) ? 'page' : 'component',\n mpInstance: this,\n propsData: properties\n };\n\n initVueIds(properties.vueId, this);\n\n // 处理父子关系\n initRelation.call(this, {\n vuePid: this._$vuePid,\n vueOptions: options\n });\n\n // 初始化 vue 实例\n this.$vm = new VueComponent(options);\n\n // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\n initSlots(this.$vm, properties.vueSlots);\n\n // 触发首次 setData\n this.$vm.$mount();\n },\n ready () {\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\n if (this.$vm) {\n this.$vm._isMounted = true;\n this.$vm.__call_hook('mounted');\n this.$vm.__call_hook('onReady');\n }\n },\n detached () {\n this.$vm && this.$vm.$destroy();\n }\n },\n pageLifetimes: {\n show (args) {\n this.$vm && this.$vm.__call_hook('onPageShow', args);\n },\n hide () {\n this.$vm && this.$vm.__call_hook('onPageHide');\n },\n resize (size) {\n this.$vm && this.$vm.__call_hook('onPageResize', size);\n }\n },\n methods: {\n __l: handleLink,\n __e: handleEvent\n }\n };\n // externalClasses\n if (vueOptions.externalClasses) {\n componentOptions.externalClasses = vueOptions.externalClasses;\n }\n\n if (Array.isArray(vueOptions.wxsCallMethods)) {\n vueOptions.wxsCallMethods.forEach(callMethod => {\n componentOptions.methods[callMethod] = function (args) {\n return this.$vm[callMethod](args)\n };\n });\n }\n\n if (isPage) {\n return componentOptions\n }\n return [componentOptions, VueComponent]\n}\n\nfunction parseComponent (vueComponentOptions) {\n return parseBaseComponent(vueComponentOptions, {\n isPage,\n initRelation\n })\n}\n\nconst hooks$1 = [\n 'onShow',\n 'onHide',\n 'onUnload'\n];\n\nhooks$1.push(...PAGE_EVENT_HOOKS);\n\nfunction parseBasePage (vuePageOptions, {\n isPage,\n initRelation\n}) {\n const pageOptions = parseComponent(vuePageOptions);\n\n initHooks(pageOptions.methods, hooks$1, vuePageOptions);\n\n pageOptions.methods.onLoad = function (query) {\n this.options = query;\n const copyQuery = Object.assign({}, query);\n delete copyQuery.__id__;\n this.$page = {\n fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\n };\n this.$vm.$mp.query = query; // 兼容 mpvue\n this.$vm.__call_hook('onLoad', query);\n };\n\n return pageOptions\n}\n\nfunction parsePage (vuePageOptions) {\n return parseBasePage(vuePageOptions, {\n isPage,\n initRelation\n })\n}\n\nfunction createPage (vuePageOptions) {\n {\n return Component(parsePage(vuePageOptions))\n }\n}\n\nfunction createComponent (vueOptions) {\n {\n return Component(parseComponent(vueOptions))\n }\n}\n\ntodos.forEach(todoApi => {\n protocols[todoApi] = false;\n});\n\ncanIUses.forEach(canIUseApi => {\n const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\n : canIUseApi;\n if (!wx.canIUse(apiName)) {\n protocols[canIUseApi] = false;\n }\n});\n\nlet uni = {};\n\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\n uni = new Proxy({}, {\n get (target, name) {\n if (hasOwn(target, name)) {\n return target[name]\n }\n if (baseApi[name]) {\n return baseApi[name]\n }\n if (api[name]) {\n return promisify(name, api[name])\n }\n {\n if (extraApi[name]) {\n return promisify(name, extraApi[name])\n }\n if (todoApis[name]) {\n return promisify(name, todoApis[name])\n }\n }\n if (eventApi[name]) {\n return eventApi[name]\n }\n if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {\n return\n }\n return promisify(name, wrapper(name, wx[name]))\n },\n set (target, name, value) {\n target[name] = value;\n return true\n }\n });\n} else {\n Object.keys(baseApi).forEach(name => {\n uni[name] = baseApi[name];\n });\n\n {\n Object.keys(todoApis).forEach(name => {\n uni[name] = promisify(name, todoApis[name]);\n });\n Object.keys(extraApi).forEach(name => {\n uni[name] = promisify(name, todoApis[name]);\n });\n }\n\n Object.keys(eventApi).forEach(name => {\n uni[name] = eventApi[name];\n });\n\n Object.keys(api).forEach(name => {\n uni[name] = promisify(name, api[name]);\n });\n\n Object.keys(wx).forEach(name => {\n if (hasOwn(wx, name) || hasOwn(protocols, name)) {\n uni[name] = promisify(name, wrapper(name, wx[name]));\n }\n });\n}\n\nwx.createApp = createApp;\nwx.createPage = createPage;\nwx.createComponent = createComponent;\n\nvar uni$1 = uni;\n\nexport default uni$1;\nexport { createApp, createComponent, createPage };\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode, /* vue-cli only */\n components, // fixed by xxxxxx auto components\n renderjs // fixed by xxxxxx renderjs\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // fixed by xxxxxx auto components\n if (components) {\n if (!options.components) {\n options.components = {}\n }\n var hasOwn = Object.prototype.hasOwnProperty\n for (var name in components) {\n if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {\n options.components[name] = components[name]\n }\n }\n }\n // fixed by xxxxxx renderjs\n if (renderjs) {\n (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {\n this[renderjs.__module] = this\n });\n (options.mixins || (options.mixins = [])).push(renderjs)\n }\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n return ('') + vm.$options.__file\n }\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm && vm.$options.name !== 'PageBody') {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n !vm.$options.isReserved && tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.SharedObject.target) {\n Dep.SharedObject.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n if(value.push !== value.__proto__.push){\n copyAugment(value, arrayMethods, arrayKeys);\n } else {\n protoAugment(value, arrayMethods);\n }\n }\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.SharedObject.target) { // fixed by xxxxxx\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\n/* */\n\n// fixed by xxxxxx (mp properties)\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\n if (isUndef(propOptions)) {\n return res\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n var result = checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n // externalClass\n if (\n result &&\n res[key] &&\n externalClasses.indexOf(altKey) !== -1 &&\n context[camelize(res[key])]\n ) {\n // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n res[key] = context[camelize(res[key])];\n }\n }\n }\n return res\n}\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag,\n context// fixed by xxxxxx\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n // fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page\n if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){\n (slots['page'] || (slots['page'] = [])).push(child);\n }else{\n (slots.default || (slots.default = [])).push(child);\n }\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i, i, i); // fixed by xxxxxx\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length, i++, i)); // fixed by xxxxxx\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i, i); // fixed by xxxxxx\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n // fixed by xxxxxx app-plus scopedSlot\n nodes = scopedSlotFn(props, this, props._i) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n callHook(componentInstance, 'onServiceCreated');\n callHook(componentInstance, 'onServiceAttached');\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n \n // fixed by xxxxxx update properties(mp runtime)\n vm._$updateProperties && vm._$updateProperties(vm);\n \n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n {\n if(vm.mpHost === 'mp-baidu'){//百度 observer 在 setData callback 之后触发,直接忽略该 warn\n return\n }\n //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警\n if(\n key === 'value' && \n Array.isArray(vm.$options.behaviors) &&\n vm.$options.behaviors.indexOf('uni://form-field') !== -1\n ){\n return\n }\n if(vm._getFormData){\n return\n }\n var $parent = vm.$parent;\n while($parent){\n if($parent.__next_tick_pending){\n return \n }\n $parent = $parent.$parent;\n }\n }\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.SharedObject.target) {// fixed by xxxxxx\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n !vm._$fallback && initInjections(vm); // resolve injections before data/props \n initState(vm);\n !vm._$fallback && initProvide(vm); // resolve provide after data/props\n !vm._$fallback && callHook(vm, 'created'); \n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.11';\n\n/**\n * https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js\n */\nvar ARRAYTYPE = '[object Array]';\nvar OBJECTTYPE = '[object Object]';\n// const FUNCTIONTYPE = '[object Function]'\n\nfunction diff(current, pre) {\n var result = {};\n syncKeys(current, pre);\n _diff(current, pre, '', result);\n return result\n}\n\nfunction syncKeys(current, pre) {\n if (current === pre) { return }\n var rootCurrentType = type(current);\n var rootPreType = type(pre);\n if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n if(Object.keys(current).length >= Object.keys(pre).length){\n for (var key in pre) {\n var currentValue = current[key];\n if (currentValue === undefined) {\n current[key] = null;\n } else {\n syncKeys(currentValue, pre[key]);\n }\n }\n }\n } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n if (current.length >= pre.length) {\n pre.forEach(function (item, index) {\n syncKeys(current[index], item);\n });\n }\n }\n}\n\nfunction _diff(current, pre, path, result) {\n if (current === pre) { return }\n var rootCurrentType = type(current);\n var rootPreType = type(pre);\n if (rootCurrentType == OBJECTTYPE) {\n if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n setResult(result, path, current);\n } else {\n var loop = function ( key ) {\n var currentValue = current[key];\n var preValue = pre[key];\n var currentType = type(currentValue);\n var preType = type(preValue);\n if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n if (currentValue != pre[key]) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n }\n } else if (currentType == ARRAYTYPE) {\n if (preType != ARRAYTYPE) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n if (currentValue.length < preValue.length) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n currentValue.forEach(function (item, index) {\n _diff(item, preValue[index], (path == '' ? '' : path + \".\") + key + '[' + index + ']', result);\n });\n }\n }\n } else if (currentType == OBJECTTYPE) {\n if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n } else {\n for (var subKey in currentValue) {\n _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + \".\") + key + '.' + subKey, result);\n }\n }\n }\n };\n\n for (var key in current) loop( key );\n }\n } else if (rootCurrentType == ARRAYTYPE) {\n if (rootPreType != ARRAYTYPE) {\n setResult(result, path, current);\n } else {\n if (current.length < pre.length) {\n setResult(result, path, current);\n } else {\n current.forEach(function (item, index) {\n _diff(item, pre[index], path + '[' + index + ']', result);\n });\n }\n }\n } else {\n setResult(result, path, current);\n }\n}\n\nfunction setResult(result, k, v) {\n // if (type(v) != FUNCTIONTYPE) {\n result[k] = v;\n // }\n}\n\nfunction type(obj) {\n return Object.prototype.toString.call(obj)\n}\n\n/* */\n\nfunction flushCallbacks$1(vm) {\n if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {\n if (process.env.VUE_APP_DEBUG) {\n var mpInstance = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');\n }\n var copies = vm.__next_tick_callbacks.slice(0);\n vm.__next_tick_callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n}\n\nfunction hasRenderWatcher(vm) {\n return queue.find(function (watcher) { return vm._watcher === watcher; })\n}\n\nfunction nextTick$1(vm, cb) {\n //1.nextTick 之前 已 setData 且 setData 还未回调完成\n //2.nextTick 之前存在 render watcher\n if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {\n if(process.env.VUE_APP_DEBUG){\n var mpInstance = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n ']:nextVueTick');\n }\n return nextTick(cb, vm)\n }else{\n if(process.env.VUE_APP_DEBUG){\n var mpInstance$1 = vm.$scope;\n console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +\n ']:nextMPTick');\n }\n }\n var _resolve;\n if (!vm.__next_tick_callbacks) {\n vm.__next_tick_callbacks = [];\n }\n vm.__next_tick_callbacks.push(function () {\n if (cb) {\n try {\n cb.call(vm);\n } catch (e) {\n handleError(e, vm, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(vm);\n }\n });\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nfunction cloneWithData(vm) {\n // 确保当前 vm 所有数据被同步\n var ret = Object.create(null);\n var dataKeys = [].concat(\n Object.keys(vm._data || {}),\n Object.keys(vm._computedWatchers || {}));\n\n dataKeys.reduce(function(ret, key) {\n ret[key] = vm[key];\n return ret\n }, ret);\n\n // vue-composition-api\n var rawBindings = vm.__secret_vfa_state__ && vm.__secret_vfa_state__.rawBindings;\n if (rawBindings) {\n Object.keys(rawBindings).forEach(function (key) {\n ret[key] = vm[key];\n });\n }\n \n //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据\n Object.assign(ret, vm.$mp.data || {});\n if (\n Array.isArray(vm.$options.behaviors) &&\n vm.$options.behaviors.indexOf('uni://form-field') !== -1\n ) { //form-field\n ret['name'] = vm.name;\n ret['value'] = vm.value;\n }\n\n return JSON.parse(JSON.stringify(ret))\n}\n\nvar patch = function(oldVnode, vnode) {\n var this$1 = this;\n\n if (vnode === null) { //destroy\n return\n }\n if (this.mpType === 'page' || this.mpType === 'component') {\n var mpInstance = this.$scope;\n var data = Object.create(null);\n try {\n data = cloneWithData(this);\n } catch (err) {\n console.error(err);\n }\n data.__webviewId__ = mpInstance.data.__webviewId__;\n var mpData = Object.create(null);\n Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据\n mpData[key] = mpInstance.data[key];\n });\n var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);\n if (Object.keys(diffData).length) {\n if (process.env.VUE_APP_DEBUG) {\n console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +\n ']差量更新',\n JSON.stringify(diffData));\n }\n this.__next_tick_pending = true;\n mpInstance.setData(diffData, function () {\n this$1.__next_tick_pending = false;\n flushCallbacks$1(this$1);\n });\n } else {\n flushCallbacks$1(this);\n }\n }\n};\n\n/* */\n\nfunction createEmptyRender() {\n\n}\n\nfunction mountComponent$1(\n vm,\n el,\n hydrating\n) {\n if (!vm.mpType) {//main.js 中的 new Vue\n return vm\n }\n if (vm.mpType === 'app') {\n vm.$options.render = createEmptyRender;\n }\n if (!vm.$options.render) {\n vm.$options.render = createEmptyRender;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n \n !vm._$fallback && callHook(vm, 'beforeMount');\n\n var updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before() {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n return vm\n}\n\n/* */\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/* */\n\nvar MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];\n\nfunction getTarget(obj, path) {\n var parts = path.split('.');\n var key = parts[0];\n if (key.indexOf('__$n') === 0) { //number index\n key = parseInt(key.replace('__$n', ''));\n }\n if (parts.length === 1) {\n return obj[key]\n }\n return getTarget(obj[key], parts.slice(1).join('.'))\n}\n\nfunction internalMixin(Vue) {\n\n Vue.config.errorHandler = function(err, vm, info) {\n Vue.util.warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n console.error(err);\n /* eslint-disable no-undef */\n var app = getApp();\n if (app && app.onError) {\n app.onError(err);\n }\n };\n\n var oldEmit = Vue.prototype.$emit;\n\n Vue.prototype.$emit = function(event) {\n if (this.$scope && event) {\n this.$scope['triggerEvent'](event, {\n __args__: toArray(arguments, 1)\n });\n }\n return oldEmit.apply(this, arguments)\n };\n\n Vue.prototype.$nextTick = function(fn) {\n return nextTick$1(this, fn)\n };\n\n MP_METHODS.forEach(function (method) {\n Vue.prototype[method] = function(args) {\n if (this.$scope && this.$scope[method]) {\n return this.$scope[method](args)\n }\n // mp-alipay\n if (typeof my === 'undefined') {\n return\n }\n if (method === 'createSelectorQuery') {\n /* eslint-disable no-undef */\n return my.createSelectorQuery(args)\n } else if (method === 'createIntersectionObserver') {\n /* eslint-disable no-undef */\n return my.createIntersectionObserver(args)\n }\n // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent\n };\n });\n\n Vue.prototype.__init_provide = initProvide;\n\n Vue.prototype.__init_injections = initInjections;\n\n Vue.prototype.__call_hook = function(hook, args) {\n var vm = this;\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n var ret;\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook, args);\n }\n popTarget();\n return ret\n };\n\n Vue.prototype.__set_model = function(target, key, value, modifiers) {\n if (Array.isArray(modifiers)) {\n if (modifiers.indexOf('trim') !== -1) {\n value = value.trim();\n }\n if (modifiers.indexOf('number') !== -1) {\n value = this._n(value);\n }\n }\n if (!target) {\n target = this;\n }\n target[key] = value;\n };\n\n Vue.prototype.__set_sync = function(target, key, value) {\n if (!target) {\n target = this;\n }\n target[key] = value;\n };\n\n Vue.prototype.__get_orig = function(item) {\n if (isPlainObject(item)) {\n return item['$orig'] || item\n }\n return item\n };\n\n Vue.prototype.__get_value = function(dataPath, target) {\n return getTarget(target || this, dataPath)\n };\n\n\n Vue.prototype.__get_class = function(dynamicClass, staticClass) {\n return renderClass(staticClass, dynamicClass)\n };\n\n Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {\n if (!dynamicStyle && !staticStyle) {\n return ''\n }\n var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);\n var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;\n return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + \":\" + (styleObj[name])); }).join(';')\n };\n\n Vue.prototype.__map = function(val, iteratee) {\n //TODO 暂不考虑 string\n var ret, i, l, keys, key;\n if (Array.isArray(val)) {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = iteratee(val[i], i);\n }\n return ret\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = Object.create(null);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[key] = iteratee(val[key], key, i);\n }\n return ret\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0, l = val; i < l; i++) {\n // 第一个参数暂时仍和小程序一致\n ret[i] = iteratee(i, i);\n }\n return ret\n }\n return []\n };\n\n}\n\n/* */\n\nvar LIFECYCLE_HOOKS$1 = [\n //App\n 'onLaunch',\n 'onShow',\n 'onHide',\n 'onUniNViewMessage',\n 'onPageNotFound',\n 'onThemeChange',\n 'onError',\n 'onUnhandledRejection',\n //Page\n 'onLoad',\n // 'onShow',\n 'onReady',\n // 'onHide',\n 'onUnload',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onTabItemTap',\n 'onAddToFavorites',\n 'onShareTimeline',\n 'onShareAppMessage',\n 'onResize',\n 'onPageScroll',\n 'onNavigationBarButtonTap',\n 'onBackPress',\n 'onNavigationBarSearchInputChanged',\n 'onNavigationBarSearchInputConfirmed',\n 'onNavigationBarSearchInputClicked',\n //Component\n // 'onReady', // 兼容旧版本,应该移除该事件\n 'onPageShow',\n 'onPageHide',\n 'onPageResize'\n];\nfunction lifecycleMixin$1(Vue) {\n\n //fixed vue-class-component\n var oldExtend = Vue.extend;\n Vue.extend = function(extendOptions) {\n extendOptions = extendOptions || {};\n\n var methods = extendOptions.methods;\n if (methods) {\n Object.keys(methods).forEach(function (methodName) {\n if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {\n extendOptions[methodName] = methods[methodName];\n delete methods[methodName];\n }\n });\n }\n\n return oldExtend.call(this, extendOptions)\n };\n\n var strategies = Vue.config.optionMergeStrategies;\n var mergeHook = strategies.created;\n LIFECYCLE_HOOKS$1.forEach(function (hook) {\n strategies[hook] = mergeHook;\n });\n\n Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;\n}\n\n/* */\n\n// install platform patch function\nVue.prototype.__patch__ = patch;\n\n// public mount method\nVue.prototype.$mount = function(\n el ,\n hydrating \n) {\n return mountComponent$1(this, el, hydrating)\n};\n\nlifecycleMixin$1(Vue);\ninternalMixin(Vue);\n\n/* */\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n html2canvas 0.5.0-beta4 <http://html2canvas.hertzen.com>\n Copyright (c) 2017 Niklas von Hertzen\n 2017-06-14 Custom build by Erik Koopmans, featuring latest bugfixes and features\n Released under MIT License\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.html2canvas = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\n\nfunction restoreOwnerScroll(ownerDocument, x, y) {\n if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n}\n\nfunction cloneCanvasContents(canvas, clonedCanvas) {\n try {\n if (clonedCanvas) {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n clonedCanvas.getContext(\"2d\").putImageData(canvas.getContext(\"2d\").getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n }\n } catch(e) {\n log(\"Unable to copy canvas content from\", canvas, e);\n }\n}\n\nfunction cloneNode(node, javascriptEnabled) {\n var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false);\n\n var child = node.firstChild;\n while(child) {\n if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n child = child.nextSibling;\n }\n\n if (node.nodeType === 1) {\n clone._scrollTop = node.scrollTop;\n clone._scrollLeft = node.scrollLeft;\n if (node.nodeName === \"CANVAS\") {\n cloneCanvasContents(node, clone);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n }\n\n return clone;\n}\n\nfunction initNode(node) {\n if (node.nodeType === 1) {\n node.scrollTop = node._scrollTop;\n node.scrollLeft = node._scrollLeft;\n\n var child = node.firstChild;\n while(child) {\n initNode(child);\n child = child.nextSibling;\n }\n }\n}\n\nmodule.exports = function(ownerDocument, containerDocument, width, height, options, x ,y) {\n var documentElement = cloneNode(ownerDocument.documentElement, options.javascriptEnabled);\n var container = containerDocument.createElement(\"iframe\");\n\n container.className = \"html2canvas-container\";\n container.style.visibility = \"hidden\";\n container.style.position = \"fixed\";\n container.style.left = \"-10000px\";\n container.style.top = \"0px\";\n container.style.border = \"0\";\n container.width = width;\n container.height = height;\n container.scrolling = \"no\"; // ios won't scroll without it\n containerDocument.body.appendChild(container);\n\n return new Promise(function(resolve) {\n var documentClone = container.contentWindow.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 container.contentWindow.onload = container.onload = function() {\n var interval = setInterval(function() {\n if (documentClone.body.childNodes.length > 0) {\n initNode(documentClone.documentElement);\n clearInterval(interval);\n if (options.type === \"view\") {\n container.contentWindow.scrollTo(x, y);\n if ((/(iPad|iPhone|iPod)/g).test(navigator.userAgent) && (container.contentWindow.scrollY !== y || container.contentWindow.scrollX !== x)) {\n documentClone.documentElement.style.top = (-y) + \"px\";\n documentClone.documentElement.style.left = (-x) + \"px\";\n documentClone.documentElement.style.position = 'absolute';\n }\n }\n resolve(container);\n }\n }, 50);\n };\n\n documentClone.open();\n documentClone.write(\"<!DOCTYPE html><html></html>\");\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(ownerDocument, x, y);\n documentClone.replaceChild(documentClone.adoptNode(documentElement), documentClone.documentElement);\n documentClone.close();\n });\n};\n\n},{\"./log\":13}],3:[function(_dereq_,module,exports){\n// http://dev.w3.org/csswg/css-color/\n\nfunction Color(value) {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = null;\n var result = this.fromArray(value) ||\n this.namedColor(value) ||\n this.rgb(value) ||\n this.rgba(value) ||\n this.hex6(value) ||\n this.hex3(value);\n}\n\nColor.prototype.darken = function(amount) {\n var a = 1 - amount;\n return new Color([\n Math.round(this.r * a),\n Math.round(this.g * a),\n Math.round(this.b * a),\n this.a\n ]);\n};\n\nColor.prototype.isTransparent = function() {\n return this.a === 0;\n};\n\nColor.prototype.isBlack = function() {\n return this.r === 0 && this.g === 0 && this.b === 0;\n};\n\nColor.prototype.fromArray = function(array) {\n if (Array.isArray(array)) {\n this.r = Math.min(array[0], 255);\n this.g = Math.min(array[1], 255);\n this.b = Math.min(array[2], 255);\n if (array.length > 3) {\n this.a = array[3];\n }\n }\n\n return (Array.isArray(array));\n};\n\nvar _hex3 = /^#([a-f0-9]{3})$/i;\n\nColor.prototype.hex3 = function(value) {\n var match = null;\n if ((match = value.match(_hex3)) !== null) {\n this.r = parseInt(match[1][0] + match[1][0], 16);\n this.g = parseInt(match[1][1] + match[1][1], 16);\n this.b = parseInt(match[1][2] + match[1][2], 16);\n }\n return match !== null;\n};\n\nvar _hex6 = /^#([a-f0-9]{6})$/i;\n\nColor.prototype.hex6 = function(value) {\n var match = null;\n if ((match = value.match(_hex6)) !== null) {\n this.r = parseInt(match[1].substring(0, 2), 16);\n this.g = parseInt(match[1].substring(2, 4), 16);\n this.b = parseInt(match[1].substring(4, 6), 16);\n }\n return match !== null;\n};\n\n\nvar _rgb = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/;\n\nColor.prototype.rgb = function(value) {\n var match = null;\n if ((match = value.match(_rgb)) !== null) {\n this.r = Number(match[1]);\n this.g = Number(match[2]);\n this.b = Number(match[3]);\n }\n return match !== null;\n};\n\nvar _rgba = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?\\.?\\d+)\\s*\\)$/;\n\nColor.prototype.rgba = function(value) {\n var match = null;\n if ((match = value.match(_rgba)) !== null) {\n this.r = Number(match[1]);\n this.g = Number(match[2]);\n this.b = Number(match[3]);\n this.a = Number(match[4]);\n }\n return match !== null;\n};\n\nColor.prototype.toString = function() {\n return this.a !== null && this.a !== 1 ?\n \"rgba(\" + [this.r, this.g, this.b, this.a].join(\",\") + \")\" :\n \"rgb(\" + [this.r, this.g, this.b].join(\",\") + \")\";\n};\n\nColor.prototype.namedColor = function(value) {\n value = value.toLowerCase();\n var color = colors[value];\n if (color) {\n this.r = color[0];\n this.g = color[1];\n this.b = color[2];\n } else if (value === \"transparent\") {\n this.r = this.g = this.b = this.a = 0;\n return true;\n }\n\n return !!color;\n};\n\nColor.prototype.isColor = true;\n\n// JSON.stringify([].slice.call($$('.named-color-table tr'), 1).map(function(row) { return [row.childNodes[3].textContent, row.childNodes[5].textContent.trim().split(\",\").map(Number)] }).reduce(function(data, row) {data[row[0]] = row[1]; return data}, {}))\nvar colors = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n};\n\nmodule.exports = Color;\n\n},{}],4:[function(_dereq_,module,exports){\nvar Support = _dereq_('./support');\nvar CanvasRenderer = _dereq_('./renderers/canvas');\nvar ImageLoader = _dereq_('./imageloader');\nvar NodeParser = _dereq_('./nodeparser');\nvar NodeContainer = _dereq_('./nodecontainer');\nvar log = _dereq_('./log');\nvar utils = _dereq_('./utils');\nvar createWindowClone = _dereq_('./clone');\nvar loadUrlDocument = _dereq_('./proxy').loadUrlDocument;\nvar getBounds = utils.getBounds;\n\nvar html2canvasNodeAttribute = \"data-html2canvas-node\";\nvar html2canvasCloneIndex = 0;\n\nfunction html2canvas(nodeList, options) {\n var index = html2canvasCloneIndex++;\n options = options || {};\n if (options.logging) {\n log.options.logging = true;\n log.options.start = Date.now();\n }\n\n options.async = typeof(options.async) === \"undefined\" ? true : options.async;\n options.allowTaint = typeof(options.allowTaint) === \"undefined\" ? false : options.allowTaint;\n options.removeContainer = typeof(options.removeContainer) === \"undefined\" ? true : options.removeContainer;\n options.javascriptEnabled = typeof(options.javascriptEnabled) === \"undefined\" ? false : options.javascriptEnabled;\n options.imageTimeout = typeof(options.imageTimeout) === \"undefined\" ? 10000 : options.imageTimeout;\n options.renderer = typeof(options.renderer) === \"function\" ? options.renderer : CanvasRenderer;\n options.strict = !!options.strict;\n\n if (typeof(nodeList) === \"string\") {\n if (typeof(options.proxy) !== \"string\") {\n return Promise.reject(\"Proxy must be used when rendering url\");\n }\n var width = options.width != null ? options.width : window.innerWidth;\n var height = options.height != null ? options.height : window.innerHeight;\n return loadUrlDocument(absoluteUrl(nodeList), options.proxy, document, width, height, options).then(function(container) {\n return renderWindow(container.contentWindow.document.documentElement, container, options, width, height);\n });\n }\n\n var node = ((nodeList === undefined) ? [document.documentElement] : ((nodeList.length) ? nodeList : [nodeList]))[0];\n node.setAttribute(html2canvasNodeAttribute + index, index);\n return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {\n if (typeof(options.onrendered) === \"function\") {\n log(\"options.onrendered is deprecated, html2canvas returns a Promise containing the canvas\");\n options.onrendered(canvas);\n }\n return canvas;\n });\n}\n\nhtml2canvas.CanvasRenderer = CanvasRenderer;\nhtml2canvas.NodeContainer = NodeContainer;\nhtml2canvas.log = log;\nhtml2canvas.utils = utils;\n\nvar html2canvasExport = (typeof(document) === \"undefined\" || typeof(Object.create) !== \"function\" || typeof(document.createElement(\"canvas\").getContext) !== \"function\") ? function() {\n return Promise.reject(\"No canvas support\");\n} : html2canvas;\n\nmodule.exports = html2canvasExport;\n\nif (typeof(define) === 'function' && define.amd) {\n define('html2canvas', [], function() {\n return html2canvasExport;\n });\n}\n\nfunction renderDocument(document, options, windowWidth, windowHeight, html2canvasIndex) {\n return createWindowClone(document, document, windowWidth, windowHeight, options, document.defaultView.pageXOffset, document.defaultView.pageYOffset).then(function(container) {\n log(\"Document cloned\");\n var attributeName = html2canvasNodeAttribute + html2canvasIndex;\n var selector = \"[\" + attributeName + \"='\" + html2canvasIndex + \"']\";\n document.querySelector(selector).removeAttribute(attributeName);\n var clonedWindow = container.contentWindow;\n var node = clonedWindow.document.querySelector(selector);\n var oncloneHandler = (typeof(options.onclone) === \"function\") ? Promise.resolve(options.onclone(clonedWindow.document)) : Promise.resolve(true);\n return oncloneHandler.then(function() {\n return renderWindow(node, container, options, windowWidth, windowHeight);\n });\n });\n}\n\nfunction renderWindow(node, container, options, windowWidth, windowHeight) {\n var clonedWindow = container.contentWindow;\n var support = new Support(clonedWindow.document);\n var imageLoader = new ImageLoader(options, support);\n var bounds = getBounds(node);\n var width = options.type === \"view\" ? windowWidth : bounds.right + 1;\n var height = options.type === \"view\" ? windowHeight : bounds.bottom + 1;\n var renderer = new options.renderer(width, height, imageLoader, options, document);\n var parser = new NodeParser(node, renderer, support, imageLoader, options);\n return parser.ready.then(function() {\n log(\"Finished rendering\");\n var canvas;\n\n if (options.type === \"view\") {\n canvas = crop(renderer.canvas, {width: renderer.canvas.width, height: renderer.canvas.height, top: 0, left: 0, x: 0, y: 0});\n } else if (node === clonedWindow.document.body || node === clonedWindow.document.documentElement || options.canvas != null) {\n canvas = renderer.canvas;\n } else if (options.scale) {\n var origBounds = {width: options.width != null ? options.width : bounds.width, height: options.height != null ? options.height : bounds.height, top: bounds.top, left: bounds.left, x: 0, y: 0};\n var cropBounds = {};\n for (var key in origBounds) {\n if (origBounds.hasOwnProperty(key)) { cropBounds[key] = origBounds[key] * options.scale; }\n }\n canvas = crop(renderer.canvas, cropBounds);\n canvas.style.width = origBounds.width + 'px';\n canvas.style.height = origBounds.height + 'px';\n } else {\n canvas = crop(renderer.canvas, {width: options.width != null ? options.width : bounds.width, height: options.height != null ? options.height : bounds.height, top: bounds.top, left: bounds.left, x: 0, y: 0});\n }\n\n cleanupContainer(container, options);\n return canvas;\n });\n}\n\nfunction cleanupContainer(container, options) {\n if (options.removeContainer) {\n container.parentNode.removeChild(container);\n log(\"Cleaned up container\");\n }\n}\n\nfunction crop(canvas, bounds) {\n var croppedCanvas = document.createElement(\"canvas\");\n var x1 = Math.min(canvas.width - 1, Math.max(0, bounds.left));\n var x2 = Math.min(canvas.width, Math.max(1, bounds.left + bounds.width));\n var y1 = Math.min(canvas.height - 1, Math.max(0, bounds.top));\n var y2 = Math.min(canvas.height, Math.max(1, bounds.top + bounds.height));\n croppedCanvas.width = bounds.width;\n croppedCanvas.height = bounds.height;\n var width = x2-x1;\n var height = y2-y1;\n log(\"Cropping canvas at:\", \"left:\", bounds.left, \"top:\", bounds.top, \"width:\", width, \"height:\", height);\n log(\"Resulting crop with width\", bounds.width, \"and height\", bounds.height, \"with x\", x1, \"and y\", y1);\n croppedCanvas.getContext(\"2d\").drawImage(canvas, x1, y1, width, height, bounds.x, bounds.y, width, height);\n return croppedCanvas;\n}\n\nfunction documentWidth (doc) {\n return Math.max(\n Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth),\n Math.max(doc.body.offsetWidth, doc.documentElement.offsetWidth),\n Math.max(doc.body.clientWidth, doc.documentElement.clientWidth)\n );\n}\n\nfunction documentHeight (doc) {\n return Math.max(\n Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight),\n Math.max(doc.body.offsetHeight, doc.documentElement.offsetHeight),\n Math.max(doc.body.clientHeight, doc.documentElement.clientHeight)\n );\n}\n\nfunction absoluteUrl(url) {\n var link = document.createElement(\"a\");\n link.href = url;\n link.href = link.href;\n return link;\n}\n\n},{\"./clone\":2,\"./imageloader\":11,\"./log\":13,\"./nodecontainer\":14,\"./nodeparser\":15,\"./proxy\":16,\"./renderers/canvas\":20,\"./support\":22,\"./utils\":26}],5:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar smallImage = _dereq_('./utils').smallImage;\n\nfunction DummyImageContainer(src) {\n this.src = src;\n log(\"DummyImageContainer for\", src);\n if (!this.promise || !this.image) {\n log(\"Initiating DummyImageContainer\");\n DummyImageContainer.prototype.image = new Image();\n var image = this.image;\n DummyImageContainer.prototype.promise = new Promise(function(resolve, reject) {\n image.onload = resolve;\n image.onerror = reject;\n image.src = smallImage();\n if (image.complete === true) {\n resolve(image);\n }\n });\n }\n}\n\nmodule.exports = DummyImageContainer;\n\n},{\"./log\":13,\"./utils\":26}],6:[function(_dereq_,module,exports){\nvar smallImage = _dereq_('./utils').smallImage;\n\nfunction Font(family, size) {\n var container = document.createElement('div'),\n img = document.createElement('img'),\n span = document.createElement('span'),\n sampleText = 'Hidden Text',\n baseline,\n middle;\n\n container.style.visibility = \"hidden\";\n container.style.fontFamily = family;\n container.style.fontSize = size;\n container.style.margin = 0;\n container.style.padding = 0;\n\n document.body.appendChild(container);\n\n img.src = smallImage();\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 = family;\n span.style.fontSize = size;\n span.style.margin = 0;\n span.style.padding = 0;\n\n span.appendChild(document.createTextNode(sampleText));\n container.appendChild(span);\n container.appendChild(img);\n baseline = (img.offsetTop - span.offsetTop) + 1;\n\n container.removeChild(span);\n container.appendChild(document.createTextNode(sampleText));\n\n container.style.lineHeight = \"normal\";\n img.style.verticalAlign = \"super\";\n\n middle = (img.offsetTop-container.offsetTop) + 1;\n\n document.body.removeChild(container);\n\n this.baseline = baseline;\n this.lineWidth = 1;\n this.middle = middle;\n}\n\nmodule.exports = Font;\n\n},{\"./utils\":26}],7:[function(_dereq_,module,exports){\nvar Font = _dereq_('./font');\n\nfunction FontMetrics() {\n this.data = {};\n}\n\nFontMetrics.prototype.getMetrics = function(family, size) {\n if (this.data[family + \"-\" + size] === undefined) {\n this.data[family + \"-\" + size] = new Font(family, size);\n }\n return this.data[family + \"-\" + size];\n};\n\nmodule.exports = FontMetrics;\n\n},{\"./font\":6}],8:[function(_dereq_,module,exports){\nvar utils = _dereq_('./utils');\nvar getBounds = utils.getBounds;\nvar loadUrlDocument = _dereq_('./proxy').loadUrlDocument;\n\nfunction FrameContainer(container, sameOrigin, options) {\n this.image = null;\n this.src = container;\n var self = this;\n var bounds = getBounds(container);\n this.promise = (!sameOrigin ? this.proxyLoad(options.proxy, bounds, options) : new Promise(function(resolve) {\n if (container.contentWindow.document.URL === \"about:blank\" || container.contentWindow.document.documentElement == null) {\n container.contentWindow.onload = container.onload = function() {\n resolve(container);\n };\n } else {\n resolve(container);\n }\n })).then(function(container) {\n var html2canvas = _dereq_('./core');\n return html2canvas(container.contentWindow.document.documentElement, {type: 'view', width: container.width, height: container.height, proxy: options.proxy, javascriptEnabled: options.javascriptEnabled, removeContainer: options.removeContainer, allowTaint: options.allowTaint, imageTimeout: options.imageTimeout / 2});\n }).then(function(canvas) {\n return self.image = canvas;\n });\n}\n\nFrameContainer.prototype.proxyLoad = function(proxy, bounds, options) {\n var container = this.src;\n return loadUrlDocument(container.src, proxy, container.ownerDocument, bounds.width, bounds.height, options);\n};\n\nmodule.exports = FrameContainer;\n\n},{\"./core\":4,\"./proxy\":16,\"./utils\":26}],9:[function(_dereq_,module,exports){\nfunction GradientContainer(imageData) {\n this.src = imageData.value;\n this.colorStops = [];\n this.type = null;\n this.x0 = 0.5;\n this.y0 = 0.5;\n this.x1 = 0.5;\n this.y1 = 0.5;\n this.promise = Promise.resolve(true);\n}\n\nGradientContainer.TYPES = {\n LINEAR: 1,\n RADIAL: 2\n};\n\n// TODO: support hsl[a], negative %/length values\n// TODO: support <angle> (e.g. -?\\d{1,3}(?:\\.\\d+)deg, etc. : https://developer.mozilla.org/docs/Web/CSS/angle )\nGradientContainer.REGEXP_COLORSTOP = /^\\s*(rgba?\\(\\s*\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}(?:,\\s*[0-9\\.]+)?\\s*\\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\\s+(\\d{1,3}(?:\\.\\d+)?)(%|px)?)?(?:\\s|$)/i;\n\nmodule.exports = GradientContainer;\n\n},{}],10:[function(_dereq_,module,exports){\nfunction ImageContainer(src, cors) {\n this.src = src;\n this.image = new Image();\n var self = this;\n this.tainted = null;\n this.promise = new Promise(function(resolve, reject) {\n self.image.onload = resolve;\n self.image.onerror = reject;\n if (cors) {\n self.image.crossOrigin = \"anonymous\";\n }\n self.image.src = src;\n if (self.image.complete === true) {\n resolve(self.image);\n }\n });\n}\n\nmodule.exports = ImageContainer;\n\n},{}],11:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar ImageContainer = _dereq_('./imagecontainer');\nvar DummyImageContainer = _dereq_('./dummyimagecontainer');\nvar ProxyImageContainer = _dereq_('./proxyimagecontainer');\nvar FrameContainer = _dereq_('./framecontainer');\nvar SVGContainer = _dereq_('./svgcontainer');\nvar SVGNodeContainer = _dereq_('./svgnodecontainer');\nvar LinearGradientContainer = _dereq_('./lineargradientcontainer');\nvar WebkitGradientContainer = _dereq_('./webkitgradientcontainer');\nvar bind = _dereq_('./utils').bind;\n\nfunction ImageLoader(options, support) {\n this.link = null;\n this.options = options;\n this.support = support;\n this.origin = this.getOrigin(window.location.href);\n}\n\nImageLoader.prototype.findImages = function(nodes) {\n var images = [];\n nodes.reduce(function(imageNodes, container) {\n switch(container.node.nodeName) {\n case \"IMG\":\n return imageNodes.concat([{\n args: [container.node.src],\n method: \"url\"\n }]);\n case \"svg\":\n case \"IFRAME\":\n return imageNodes.concat([{\n args: [container.node],\n method: container.node.nodeName\n }]);\n }\n return imageNodes;\n }, []).forEach(this.addImage(images, this.loadImage), this);\n return images;\n};\n\nImageLoader.prototype.findBackgroundImage = function(images, container) {\n container.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(images, this.loadImage), this);\n return images;\n};\n\nImageLoader.prototype.addImage = function(images, callback) {\n return function(newImage) {\n newImage.args.forEach(function(image) {\n if (!this.imageExists(images, image)) {\n images.splice(0, 0, callback.call(this, newImage));\n log('Added image #' + (images.length), typeof(image) === \"string\" ? image.substring(0, 100) : image);\n }\n }, this);\n };\n};\n\nImageLoader.prototype.hasImageBackground = function(imageData) {\n return imageData.method !== \"none\";\n};\n\nImageLoader.prototype.loadImage = function(imageData) {\n if (imageData.method === \"url\") {\n var src = imageData.args[0];\n if (this.isSVG(src) && !this.support.svg && !this.options.allowTaint) {\n return new SVGContainer(src);\n } else if (src.match(/data:image\\/.*;base64,/i)) {\n return new ImageContainer(src.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/ig, ''), false);\n } else if (this.isSameOrigin(src) || this.options.allowTaint === true || this.isSVG(src)) {\n return new ImageContainer(src, false);\n } else if (this.support.cors && !this.options.allowTaint && this.options.useCORS) {\n return new ImageContainer(src, true);\n } else if (this.options.proxy) {\n return new ProxyImageContainer(src, this.options.proxy);\n } else {\n return new DummyImageContainer(src);\n }\n } else if (imageData.method === \"linear-gradient\") {\n return new LinearGradientContainer(imageData);\n } else if (imageData.method === \"gradient\") {\n return new WebkitGradientContainer(imageData);\n } else if (imageData.method === \"svg\") {\n return new SVGNodeContainer(imageData.args[0], this.support.svg);\n } else if (imageData.method === \"IFRAME\") {\n return new FrameContainer(imageData.args[0], this.isSameOrigin(imageData.args[0].src), this.options);\n } else {\n return new DummyImageContainer(imageData);\n }\n};\n\nImageLoader.prototype.isSVG = function(src) {\n return src.substring(src.length - 3).toLowerCase() === \"svg\" || SVGContainer.prototype.isInline(src);\n};\n\nImageLoader.prototype.imageExists = function(images, src) {\n return images.some(function(image) {\n return image.src === src;\n });\n};\n\nImageLoader.prototype.isSameOrigin = function(url) {\n return (this.getOrigin(url) === this.origin);\n};\n\nImageLoader.prototype.getOrigin = function(url) {\n var link = this.link || (this.link = document.createElement(\"a\"));\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\nImageLoader.prototype.getPromise = function(container) {\n return this.timeout(container, this.options.imageTimeout)['catch'](function() {\n var dummy = new DummyImageContainer(container.src);\n return dummy.promise.then(function(image) {\n container.image = image;\n });\n });\n};\n\nImageLoader.prototype.get = function(src) {\n var found = null;\n return this.images.some(function(img) {\n return (found = img).src === src;\n }) ? found : null;\n};\n\nImageLoader.prototype.fetch = function(nodes) {\n this.images = nodes.reduce(bind(this.findBackgroundImage, this), this.findImages(nodes));\n this.images.forEach(function(image, index) {\n image.promise.then(function() {\n log(\"Succesfully loaded image #\"+ (index+1), image);\n }, function(e) {\n log(\"Failed loading image #\"+ (index+1), image, e);\n });\n });\n this.ready = Promise.all(this.images.map(this.getPromise, this));\n log(\"Finished searching images\");\n return this;\n};\n\nImageLoader.prototype.timeout = function(container, timeout) {\n var timer;\n var promise = Promise.race([container.promise, new Promise(function(res, reject) {\n timer = setTimeout(function() {\n log(\"Timed out loading image\", container);\n reject(container);\n }, timeout);\n })]).then(function(container) {\n clearTimeout(timer);\n return container;\n });\n promise['catch'](function() {\n clearTimeout(timer);\n });\n return promise;\n};\n\nmodule.exports = ImageLoader;\n\n},{\"./dummyimagecontainer\":5,\"./framecontainer\":8,\"./imagecontainer\":10,\"./lineargradientcontainer\":12,\"./log\":13,\"./proxyimagecontainer\":17,\"./svgcontainer\":23,\"./svgnodecontainer\":24,\"./utils\":26,\"./webkitgradientcontainer\":27}],12:[function(_dereq_,module,exports){\nvar GradientContainer = _dereq_('./gradientcontainer');\nvar Color = _dereq_('./color');\n\nfunction LinearGradientContainer(imageData) {\n GradientContainer.apply(this, arguments);\n this.type = GradientContainer.TYPES.LINEAR;\n\n var hasDirection = LinearGradientContainer.REGEXP_DIRECTION.test( imageData.args[0] ) ||\n !GradientContainer.REGEXP_COLORSTOP.test( imageData.args[0] );\n\n if (hasDirection) {\n imageData.args[0].split(/\\s+/).reverse().forEach(function(position, index) {\n switch(position) {\n case \"left\":\n this.x0 = 0;\n this.x1 = 1;\n break;\n case \"top\":\n this.y0 = 0;\n this.y1 = 1;\n break;\n case \"right\":\n this.x0 = 1;\n this.x1 = 0;\n break;\n case \"bottom\":\n this.y0 = 1;\n this.y1 = 0;\n break;\n case \"to\":\n var y0 = this.y0;\n var x0 = this.x0;\n this.y0 = this.y1;\n this.x0 = this.x1;\n this.x1 = x0;\n this.y1 = y0;\n break;\n case \"center\":\n break; // centered by default\n // Firefox internally converts position keywords to percentages:\n // http://www.w3.org/TR/2010/WD-CSS2-20101207/colors.html#propdef-background-position\n default: // percentage or absolute length\n // TODO: support absolute start point positions (e.g., use bounds to convert px to a ratio)\n var ratio = parseFloat(position, 10) * 1e-2;\n if (isNaN(ratio)) { // invalid or unhandled value\n break;\n }\n if (index === 0) {\n this.y0 = ratio;\n this.y1 = 1 - this.y0;\n } else {\n this.x0 = ratio;\n this.x1 = 1 - this.x0;\n }\n break;\n }\n }, this);\n } else {\n this.y0 = 0;\n this.y1 = 1;\n }\n\n this.colorStops = imageData.args.slice(hasDirection ? 1 : 0).map(function(colorStop) {\n var colorStopMatch = colorStop.match(GradientContainer.REGEXP_COLORSTOP);\n var value = +colorStopMatch[2];\n var unit = value === 0 ? \"%\" : colorStopMatch[3]; // treat \"0\" as \"0%\"\n return {\n color: new Color(colorStopMatch[1]),\n // TODO: support absolute stop positions (e.g., compute gradient line length & convert px to ratio)\n stop: unit === \"%\" ? value / 100 : null\n };\n });\n\n if (this.colorStops[0].stop === null) {\n this.colorStops[0].stop = 0;\n }\n\n if (this.colorStops[this.colorStops.length - 1].stop === null) {\n this.colorStops[this.colorStops.length - 1].stop = 1;\n }\n\n // calculates and fills-in explicit stop positions when omitted from rule\n this.colorStops.forEach(function(colorStop, index) {\n if (colorStop.stop === null) {\n this.colorStops.slice(index).some(function(find, count) {\n if (find.stop !== null) {\n colorStop.stop = ((find.stop - this.colorStops[index - 1].stop) / (count + 1)) + this.colorStops[index - 1].stop;\n return true;\n } else {\n return false;\n }\n }, this);\n }\n }, this);\n}\n\nLinearGradientContainer.prototype = Object.create(GradientContainer.prototype);\n\n// TODO: support <angle> (e.g. -?\\d{1,3}(?:\\.\\d+)deg, etc. : https://developer.mozilla.org/docs/Web/CSS/angle )\nLinearGradientContainer.REGEXP_DIRECTION = /^\\s*(?:to|left|right|top|bottom|center|\\d{1,3}(?:\\.\\d+)?%?)(?:\\s|$)/i;\n\nmodule.exports = LinearGradientContainer;\n\n},{\"./color\":3,\"./gradientcontainer\":9}],13:[function(_dereq_,module,exports){\nvar logger = function() {\n if (logger.options.logging && window.console && window.console.log) {\n Function.prototype.bind.call(window.console.log, (window.console)).apply(window.console, [(Date.now() - logger.options.start) + \"ms\", \"html2canvas:\"].concat([].slice.call(arguments, 0)));\n }\n};\n\nlogger.options = {logging: false};\nmodule.exports = logger;\n\n},{}],14:[function(_dereq_,module,exports){\nvar Color = _dereq_('./color');\nvar utils = _dereq_('./utils');\nvar getBounds = utils.getBounds;\nvar parseBackgrounds = utils.parseBackgrounds;\nvar offsetBounds = utils.offsetBounds;\n\nfunction NodeContainer(node, parent) {\n this.node = node;\n this.parent = parent;\n this.stack = null;\n this.bounds = null;\n this.borders = null;\n this.clip = [];\n this.backgroundClip = [];\n this.offsetBounds = null;\n this.visible = null;\n this.computedStyles = null;\n this.colors = {};\n this.styles = {};\n this.backgroundImages = null;\n this.transformData = null;\n this.transformMatrix = null;\n this.isPseudoElement = false;\n this.opacity = null;\n}\n\nNodeContainer.prototype.cloneTo = function(stack) {\n stack.visible = this.visible;\n stack.borders = this.borders;\n stack.bounds = this.bounds;\n stack.clip = this.clip;\n stack.backgroundClip = this.backgroundClip;\n stack.computedStyles = this.computedStyles;\n stack.styles = this.styles;\n stack.backgroundImages = this.backgroundImages;\n stack.opacity = this.opacity;\n};\n\nNodeContainer.prototype.getOpacity = function() {\n return this.opacity === null ? (this.opacity = this.cssFloat('opacity')) : this.opacity;\n};\n\nNodeContainer.prototype.assignStack = function(stack) {\n this.stack = stack;\n stack.children.push(this);\n};\n\nNodeContainer.prototype.isElementVisible = function() {\n return this.node.nodeType === Node.TEXT_NODE ? this.parent.visible : (\n this.css('display') !== \"none\" &&\n this.css('visibility') !== \"hidden\" &&\n !this.node.hasAttribute(\"data-html2canvas-ignore\") &&\n (this.node.nodeName !== \"INPUT\" || this.node.getAttribute(\"type\") !== \"hidden\")\n );\n};\n\nNodeContainer.prototype.css = function(attribute) {\n if (!this.computedStyles) {\n this.computedStyles = this.isPseudoElement ? this.parent.computedStyle(this.before ? \":before\" : \":after\") : this.computedStyle(null);\n }\n\n return this.styles[attribute] || (this.styles[attribute] = this.computedStyles[attribute]);\n};\n\nNodeContainer.prototype.prefixedCss = function(attribute) {\n var prefixes = [\"webkit\", \"moz\", \"ms\", \"o\"];\n var value = this.css(attribute);\n if (value === undefined) {\n prefixes.some(function(prefix) {\n value = this.css(prefix + attribute.substr(0, 1).toUpperCase() + attribute.substr(1));\n return value !== undefined;\n }, this);\n }\n return value === undefined ? null : value;\n};\n\nNodeContainer.prototype.computedStyle = function(type) {\n return this.node.ownerDocument.defaultView.getComputedStyle(this.node, type);\n};\n\nNodeContainer.prototype.cssInt = function(attribute) {\n var value = parseInt(this.css(attribute), 10);\n return (isNaN(value)) ? 0 : value; // borders in old IE are throwing 'medium' for demo.html\n};\n\nNodeContainer.prototype.color = function(attribute) {\n return this.colors[attribute] || (this.colors[attribute] = new Color(this.css(attribute)));\n};\n\nNodeContainer.prototype.cssFloat = function(attribute) {\n var value = parseFloat(this.css(attribute));\n return (isNaN(value)) ? 0 : value;\n};\n\nNodeContainer.prototype.fontWeight = function() {\n var weight = this.css(\"fontWeight\");\n switch(parseInt(weight, 10)){\n case 401:\n weight = \"bold\";\n break;\n case 400:\n weight = \"normal\";\n break;\n }\n return weight;\n};\n\nNodeContainer.prototype.parseClip = function() {\n var matches = this.css('clip').match(this.CLIP);\n if (matches) {\n return {\n top: parseInt(matches[1], 10),\n right: parseInt(matches[2], 10),\n bottom: parseInt(matches[3], 10),\n left: parseInt(matches[4], 10)\n };\n }\n return null;\n};\n\nNodeContainer.prototype.parseBackgroundImages = function() {\n return this.backgroundImages || (this.backgroundImages = parseBackgrounds(this.css(\"backgroundImage\")));\n};\n\nNodeContainer.prototype.cssList = function(property, index) {\n var value = (this.css(property) || '').split(',');\n value = value[index || 0] || value[0] || 'auto';\n value = value.trim().split(' ');\n if (value.length === 1) {\n value = [value[0], isPercentage(value[0]) ? 'auto' : value[0]];\n }\n return value;\n};\n\nNodeContainer.prototype.parseBackgroundSize = function(bounds, image, index) {\n var size = this.cssList(\"backgroundSize\", index);\n var width, height;\n\n if (isPercentage(size[0])) {\n width = bounds.width * parseFloat(size[0]) / 100;\n } else if (/contain|cover/.test(size[0])) {\n var targetRatio = bounds.width / bounds.height, currentRatio = image.width / image.height;\n return (targetRatio < currentRatio ^ size[0] === 'contain') ? {width: bounds.height * currentRatio, height: bounds.height} : {width: bounds.width, height: bounds.width / currentRatio};\n } else {\n width = parseInt(size[0], 10);\n }\n\n if (size[0] === 'auto' && size[1] === 'auto') {\n height = image.height;\n } else if (size[1] === 'auto') {\n height = width / image.width * image.height;\n } else if (isPercentage(size[1])) {\n height = bounds.height * parseFloat(size[1]) / 100;\n } else {\n height = parseInt(size[1], 10);\n }\n\n if (size[0] === 'auto') {\n width = height / image.height * image.width;\n }\n\n return {width: width, height: height};\n};\n\nNodeContainer.prototype.parseBackgroundPosition = function(bounds, image, index, backgroundSize) {\n var position = this.cssList('backgroundPosition', index);\n var left, top;\n\n if (isPercentage(position[0])){\n left = (bounds.width - (backgroundSize || image).width) * (parseFloat(position[0]) / 100);\n } else {\n left = parseInt(position[0], 10);\n }\n\n if (position[1] === 'auto') {\n top = left / image.width * image.height;\n } else if (isPercentage(position[1])){\n top = (bounds.height - (backgroundSize || image).height) * parseFloat(position[1]) / 100;\n } else {\n top = parseInt(position[1], 10);\n }\n\n if (position[0] === 'auto') {\n left = top / image.height * image.width;\n }\n\n return {left: left, top: top};\n};\n\nNodeContainer.prototype.parseBackgroundRepeat = function(index) {\n return this.cssList(\"backgroundRepeat\", index)[0];\n};\n\nNodeContainer.prototype.parseTextShadows = function() {\n var textShadow = this.css(\"textShadow\");\n var results = [];\n\n if (textShadow && textShadow !== 'none') {\n var shadows = textShadow.match(this.TEXT_SHADOW_PROPERTY);\n for (var i = 0; shadows && (i < shadows.length); i++) {\n var s = shadows[i].match(this.TEXT_SHADOW_VALUES);\n results.push({\n color: new Color(s[0]),\n offsetX: s[1] ? parseFloat(s[1].replace('px', '')) : 0,\n offsetY: s[2] ? parseFloat(s[2].replace('px', '')) : 0,\n blur: s[3] ? s[3].replace('px', '') : 0\n });\n }\n }\n return results;\n};\n\nNodeContainer.prototype.parseTransform = function() {\n if (!this.transformData) {\n if (this.hasTransform()) {\n var offset = this.parseBounds();\n var origin = this.prefixedCss(\"transformOrigin\").split(\" \").map(removePx).map(asFloat);\n origin[0] += offset.left;\n origin[1] += offset.top;\n this.transformData = {\n origin: origin,\n matrix: this.parseTransformMatrix()\n };\n } else {\n this.transformData = {\n origin: [0, 0],\n matrix: [1, 0, 0, 1, 0, 0]\n };\n }\n }\n return this.transformData;\n};\n\nNodeContainer.prototype.parseTransformMatrix = function() {\n if (!this.transformMatrix) {\n var transform = this.prefixedCss(\"transform\");\n var matrix = transform ? parseMatrix(transform.match(this.MATRIX_PROPERTY)) : null;\n this.transformMatrix = matrix ? matrix : [1, 0, 0, 1, 0, 0];\n }\n return this.transformMatrix;\n};\n\nNodeContainer.prototype.inverseTransform = function() {\n var transformData = this.parseTransform();\n return { origin: transformData.origin, matrix: matrixInverse(transformData.matrix) };\n};\n\nNodeContainer.prototype.parseBounds = function() {\n return this.bounds || (this.bounds = this.hasTransform() ? offsetBounds(this.node) : getBounds(this.node));\n};\n\nNodeContainer.prototype.hasTransform = function() {\n return this.parseTransformMatrix().join(\",\") !== \"1,0,0,1,0,0\" || (this.parent && this.parent.hasTransform());\n};\n\nNodeContainer.prototype.getValue = function() {\n var value = this.node.value || \"\";\n if (this.node.tagName === \"SELECT\") {\n value = selectionValue(this.node);\n } else if (this.node.type === \"password\") {\n value = Array(value.length + 1).join('\\u2022'); // jshint ignore:line\n }\n return value.length === 0 ? (this.node.placeholder || \"\") : value;\n};\n\nNodeContainer.prototype.MATRIX_PROPERTY = /(matrix|matrix3d)\\((.+)\\)/;\nNodeContainer.prototype.TEXT_SHADOW_PROPERTY = /((rgba|rgb)\\([^\\)]+\\)(\\s-?\\d+px){0,})/g;\nNodeContainer.prototype.TEXT_SHADOW_VALUES = /(-?\\d+px)|(#.+)|(rgb\\(.+\\))|(rgba\\(.+\\))/g;\nNodeContainer.prototype.CLIP = /^rect\\((\\d+)px,? (\\d+)px,? (\\d+)px,? (\\d+)px\\)$/;\n\nfunction selectionValue(node) {\n var option = node.options[node.selectedIndex || 0];\n return option ? (option.text || \"\") : \"\";\n}\n\nfunction parseMatrix(match) {\n if (match && match[1] === \"matrix\") {\n return match[2].split(\",\").map(function(s) {\n return parseFloat(s.trim());\n });\n } else if (match && match[1] === \"matrix3d\") {\n var matrix3d = match[2].split(\",\").map(function(s) {\n return parseFloat(s.trim());\n });\n return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]];\n }\n}\n\nfunction matrixInverse(m) {\n // This is programmed specifically for transform matrices, which have a fixed structure.\n var a = m[0], b = m[2], c = m[4], d = m[1], e = m[3], f = m[5];\n var det = a*e - b*d;\n var M = [e, -d, -b, a, b*f-c*e, c*d-a*f].map(function(val) { return val/det; });\n return M;\n}\n\nfunction isPercentage(value) {\n return value.toString().indexOf(\"%\") !== -1;\n}\n\nfunction removePx(str) {\n return str.replace(\"px\", \"\");\n}\n\nfunction asFloat(str) {\n return parseFloat(str);\n}\n\nmodule.exports = NodeContainer;\n\n},{\"./color\":3,\"./utils\":26}],15:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar punycode = _dereq_('punycode');\nvar NodeContainer = _dereq_('./nodecontainer');\nvar TextContainer = _dereq_('./textcontainer');\nvar PseudoElementContainer = _dereq_('./pseudoelementcontainer');\nvar FontMetrics = _dereq_('./fontmetrics');\nvar Color = _dereq_('./color');\nvar StackingContext = _dereq_('./stackingcontext');\nvar utils = _dereq_('./utils');\nvar bind = utils.bind;\nvar getBounds = utils.getBounds;\nvar parseBackgrounds = utils.parseBackgrounds;\nvar offsetBounds = utils.offsetBounds;\n\nfunction NodeParser(element, renderer, support, imageLoader, options) {\n log(\"Starting NodeParser\");\n this.renderer = renderer;\n this.options = options;\n this.range = null;\n this.support = support;\n this.renderQueue = [];\n this.stack = new StackingContext(true, 1, element.ownerDocument, null);\n var parent = new NodeContainer(element, null);\n if (options.background) {\n renderer.rectangle(0, 0, renderer.width, renderer.height, new Color(options.background));\n }\n if (element === element.ownerDocument.documentElement) {\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var canvasBackground = new NodeContainer(parent.color('backgroundColor').isTransparent() ? element.ownerDocument.body : element.ownerDocument.documentElement, null);\n renderer.rectangle(0, 0, renderer.width, renderer.height, canvasBackground.color('backgroundColor'));\n }\n parent.visibile = parent.isElementVisible();\n this.createPseudoHideStyles(element.ownerDocument);\n this.disableAnimations(element.ownerDocument);\n this.nodes = flatten([parent].concat(this.getChildren(parent)).filter(function(container) {\n return container.visible = container.isElementVisible();\n }).map(this.getPseudoElements, this));\n this.fontMetrics = new FontMetrics();\n log(\"Fetched nodes, total:\", this.nodes.length);\n log(\"Calculate overflow clips\");\n this.calculateOverflowClips();\n log(\"Start fetching images\");\n this.images = imageLoader.fetch(this.nodes.filter(isElement));\n this.ready = this.images.ready.then(bind(function() {\n log(\"Images loaded, starting parsing\");\n log(\"Creating stacking contexts\");\n this.createStackingContexts();\n log(\"Sorting stacking contexts\");\n this.sortStackingContexts(this.stack);\n this.parse(this.stack);\n log(\"Render queue created with \" + this.renderQueue.length + \" items\");\n return new Promise(bind(function(resolve) {\n if (!options.async) {\n this.renderQueue.forEach(this.paint, this);\n resolve();\n } else if (typeof(options.async) === \"function\") {\n options.async.call(this, this.renderQueue, resolve);\n } else if (this.renderQueue.length > 0){\n this.renderIndex = 0;\n this.asyncRenderer(this.renderQueue, resolve);\n } else {\n resolve();\n }\n }, this));\n }, this));\n}\n\nNodeParser.prototype.calculateOverflowClips = function() {\n this.nodes.forEach(function(container) {\n if (isElement(container)) {\n if (isPseudoElement(container)) {\n container.appendToDOM();\n }\n container.borders = this.parseBorders(container);\n var clip = (container.css('overflow') === \"hidden\") ? [container.borders.clip] : [];\n var cssClip = container.parseClip();\n if (cssClip && [\"absolute\", \"fixed\"].indexOf(container.css('position')) !== -1) {\n clip.push([[\"rect\",\n container.bounds.left + cssClip.left,\n container.bounds.top + cssClip.top,\n cssClip.right - cssClip.left,\n cssClip.bottom - cssClip.top\n ]]);\n }\n container.clip = hasParentClip(container) ? container.parent.clip.concat(clip) : clip;\n container.backgroundClip = (container.css('overflow') !== \"hidden\") ? container.clip.concat([container.borders.clip]) : container.clip;\n if (isPseudoElement(container)) {\n container.cleanDOM();\n }\n } else if (isTextNode(container)) {\n container.clip = hasParentClip(container) ? container.parent.clip : [];\n }\n if (!isPseudoElement(container)) {\n container.bounds = null;\n }\n }, this);\n};\n\nfunction hasParentClip(container) {\n return container.parent && container.parent.clip.length;\n}\n\nNodeParser.prototype.asyncRenderer = function(queue, resolve, asyncTimer) {\n asyncTimer = asyncTimer || Date.now();\n this.paint(queue[this.renderIndex++]);\n if (queue.length === this.renderIndex) {\n resolve();\n } else if (asyncTimer + 20 > Date.now()) {\n this.asyncRenderer(queue, resolve, asyncTimer);\n } else {\n setTimeout(bind(function() {\n this.asyncRenderer(queue, resolve);\n }, this), 0);\n }\n};\n\nNodeParser.prototype.createPseudoHideStyles = function(document) {\n this.createStyles(document, '.' + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ':before { content: \"\" !important; display: none !important; }' +\n '.' + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER + ':after { content: \"\" !important; display: none !important; }');\n};\n\nNodeParser.prototype.disableAnimations = function(document) {\n this.createStyles(document, '* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; ' +\n '-webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}');\n};\n\nNodeParser.prototype.createStyles = function(document, styles) {\n var hidePseudoElements = document.createElement('style');\n hidePseudoElements.innerHTML = styles;\n document.body.appendChild(hidePseudoElements);\n};\n\nNodeParser.prototype.getPseudoElements = function(container) {\n var nodes = [[container]];\n if (container.node.nodeType === Node.ELEMENT_NODE) {\n var before = this.getPseudoElement(container, \":before\");\n var after = this.getPseudoElement(container, \":after\");\n\n if (before) {\n nodes.push(before);\n }\n\n if (after) {\n nodes.push(after);\n }\n }\n return flatten(nodes);\n};\n\nfunction toCamelCase(str) {\n return str.replace(/(\\-[a-z])/g, function(match){\n return match.toUpperCase().replace('-','');\n });\n}\n\nNodeParser.prototype.getPseudoElement = function(container, type) {\n var style = container.computedStyle(type);\n if(!style || !style.content || style.content === \"none\" || style.content === \"-moz-alt-content\" || style.display === \"none\") {\n return null;\n }\n\n var content = stripQuotes(style.content);\n var isImage = content.substr(0, 3) === 'url';\n var pseudoNode = document.createElement(isImage ? 'img' : 'html2canvaspseudoelement');\n var pseudoContainer = new PseudoElementContainer(pseudoNode, container, type);\n\n for (var i = style.length-1; i >= 0; i--) {\n var property = toCamelCase(style.item(i));\n pseudoNode.style[property] = style[property];\n }\n\n pseudoNode.className = PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n\n if (isImage) {\n pseudoNode.src = parseBackgrounds(content)[0].args[0];\n return [pseudoContainer];\n } else {\n var text = document.createTextNode(content);\n pseudoNode.appendChild(text);\n return [pseudoContainer, new TextContainer(text, pseudoContainer)];\n }\n};\n\n\nNodeParser.prototype.getChildren = function(parentContainer) {\n return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {\n var container = [node.nodeType === Node.TEXT_NODE ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);\n return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== \"TEXTAREA\" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;\n }, this));\n};\n\nNodeParser.prototype.newStackingContext = function(container, hasOwnStacking) {\n var stack = new StackingContext(hasOwnStacking, container.getOpacity(), container.node, container.parent);\n container.cloneTo(stack);\n var parentStack = hasOwnStacking ? stack.getParentStack(this) : stack.parent.stack;\n parentStack.contexts.push(stack);\n container.stack = stack;\n};\n\nNodeParser.prototype.createStackingContexts = function() {\n this.nodes.forEach(function(container) {\n if (isElement(container) && (this.isRootElement(container) || hasOpacity(container) || isPositionedForStacking(container) || this.isBodyWithTransparentRoot(container) || container.hasTransform())) {\n this.newStackingContext(container, true);\n } else if (isElement(container) && ((isPositioned(container) && zIndex0(container)) || isInlineBlock(container) || isFloating(container))) {\n this.newStackingContext(container, false);\n } else {\n container.assignStack(container.parent.stack);\n }\n }, this);\n};\n\nNodeParser.prototype.isBodyWithTransparentRoot = function(container) {\n return container.node.nodeName === \"BODY\" && container.parent.color('backgroundColor').isTransparent();\n};\n\nNodeParser.prototype.isRootElement = function(container) {\n return container.parent === null;\n};\n\nNodeParser.prototype.sortStackingContexts = function(stack) {\n stack.contexts.sort(zIndexSort(stack.contexts.slice(0)));\n stack.contexts.forEach(this.sortStackingContexts, this);\n};\n\nNodeParser.prototype.parseTextBounds = function(container) {\n return function(text, index, textList) {\n if (container.parent.css(\"textDecoration\").substr(0, 4) !== \"none\" || text.trim().length !== 0) {\n if (this.support.rangeBounds && !container.parent.hasTransform()) {\n var offset = textList.slice(0, index).join(\"\").length;\n return this.getRangeBounds(container.node, offset, text.length);\n } else if (container.node && typeof(container.node.data) === \"string\") {\n var replacementNode = container.node.splitText(text.length);\n var bounds = this.getWrapperBounds(container.node, container.parent.hasTransform());\n container.node = replacementNode;\n return bounds;\n }\n } else if(!this.support.rangeBounds || container.parent.hasTransform()){\n container.node = container.node.splitText(text.length);\n }\n return {};\n };\n};\n\nNodeParser.prototype.getWrapperBounds = function(node, transform) {\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\n var parent = node.parentNode,\n backupText = node.cloneNode(true);\n\n wrapper.appendChild(node.cloneNode(true));\n parent.replaceChild(wrapper, node);\n var bounds = transform ? offsetBounds(wrapper) : getBounds(wrapper);\n parent.replaceChild(backupText, wrapper);\n return bounds;\n};\n\nNodeParser.prototype.getRangeBounds = function(node, offset, length) {\n var range = this.range || (this.range = node.ownerDocument.createRange());\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range.getBoundingClientRect();\n};\n\nfunction ClearTransform() {}\n\nNodeParser.prototype.parse = function(stack) {\n // http://www.w3.org/TR/CSS21/visuren.html#z-index\n var negativeZindex = stack.contexts.filter(negativeZIndex); // 2. the child stacking contexts with negative stack levels (most negative first).\n var descendantElements = stack.children.filter(isElement);\n var descendantNonFloats = descendantElements.filter(not(isFloating));\n var nonInlineNonPositionedDescendants = descendantNonFloats.filter(not(isPositioned)).filter(not(inlineLevel)); // 3 the in-flow, non-inline-level, non-positioned descendants.\n var nonPositionedFloats = descendantElements.filter(not(isPositioned)).filter(isFloating); // 4. the non-positioned floats.\n var inFlow = descendantNonFloats.filter(not(isPositioned)).filter(inlineLevel); // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n var stackLevel0 = stack.contexts.concat(descendantNonFloats.filter(isPositioned)).filter(zIndex0); // 6. the child stacking contexts with stack level 0 and the positioned descendants with stack level 0.\n var text = stack.children.filter(isTextNode).filter(hasText);\n var positiveZindex = stack.contexts.filter(positiveZIndex); // 7. the child stacking contexts with positive stack levels (least positive first).\n negativeZindex.concat(nonInlineNonPositionedDescendants).concat(nonPositionedFloats)\n .concat(inFlow).concat(stackLevel0).concat(text).concat(positiveZindex).forEach(function(container) {\n this.renderQueue.push(container);\n if (isStackingContext(container)) {\n this.parse(container);\n this.renderQueue.push(new ClearTransform());\n }\n }, this);\n};\n\nNodeParser.prototype.paint = function(container) {\n try {\n if (container instanceof ClearTransform) {\n this.renderer.ctx.restore();\n } else if (isTextNode(container)) {\n if (isPseudoElement(container.parent)) {\n container.parent.appendToDOM();\n }\n this.paintText(container);\n if (isPseudoElement(container.parent)) {\n container.parent.cleanDOM();\n }\n } else {\n this.paintNode(container);\n }\n } catch(e) {\n log(e);\n if (this.options.strict) {\n throw e;\n }\n }\n};\n\nNodeParser.prototype.paintNode = function(container) {\n if (isStackingContext(container)) {\n this.renderer.setOpacity(container.opacity);\n this.renderer.ctx.save();\n if (container.hasTransform()) {\n this.renderer.setTransform(container.parseTransform());\n }\n }\n\n if (container.node.nodeName === \"INPUT\" && container.node.type === \"checkbox\") {\n this.paintCheckbox(container);\n } else if (container.node.nodeName === \"INPUT\" && container.node.type === \"radio\") {\n this.paintRadio(container);\n } else {\n this.paintElement(container);\n }\n};\n\nNodeParser.prototype.paintElement = function(container) {\n var bounds = container.parseBounds();\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.renderBackground(container, bounds, container.borders.borders.map(getWidth));\n }, this, container);\n\n this.renderer.mask(container.backgroundClip, function() {\n this.renderer.renderShadows(container, container.borders.clip);\n }, this, container);\n\n this.renderer.clip(container.clip, function() {\n this.renderer.renderBorders(container.borders.borders);\n }, this, container);\n\n this.renderer.clip(container.backgroundClip, function() {\n switch (container.node.nodeName) {\n case \"svg\":\n case \"IFRAME\":\n var imgContainer = this.images.get(container.node);\n if (imgContainer) {\n this.renderer.renderImage(container, bounds, container.borders, imgContainer);\n } else {\n log(\"Error loading <\" + container.node.nodeName + \">\", container.node);\n }\n break;\n case \"IMG\":\n var imageContainer = this.images.get(container.node.src);\n if (imageContainer) {\n this.renderer.renderImage(container, bounds, container.borders, imageContainer);\n } else {\n log(\"Error loading <img>\", container.node.src);\n }\n break;\n case \"CANVAS\":\n this.renderer.renderImage(container, bounds, container.borders, {image: container.node});\n break;\n case \"SELECT\":\n case \"INPUT\":\n case \"TEXTAREA\":\n this.paintFormValue(container);\n break;\n }\n }, this, container);\n};\n\nNodeParser.prototype.paintCheckbox = function(container) {\n var b = container.parseBounds();\n\n var size = Math.min(b.width, b.height);\n var bounds = {width: size - 1, height: size - 1, top: b.top, left: b.left};\n var r = [3, 3];\n var radius = [r, r, r, r];\n var borders = [1,1,1,1].map(function(w) {\n return {color: new Color('#A5A5A5'), width: w};\n });\n\n var borderPoints = calculateCurvePoints(bounds, radius, borders);\n\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.rectangle(bounds.left + 1, bounds.top + 1, bounds.width - 2, bounds.height - 2, new Color(\"#DEDEDE\"));\n this.renderer.renderBorders(calculateBorders(borders, bounds, borderPoints, radius));\n if (container.node.checked) {\n this.renderer.font(new Color('#424242'), 'normal', 'normal', 'bold', (size - 3) + \"px\", 'arial');\n this.renderer.text(\"\\u2714\", bounds.left + size / 6, bounds.top + size - 1);\n }\n }, this, container);\n};\n\nNodeParser.prototype.paintRadio = function(container) {\n var bounds = container.parseBounds();\n\n var size = Math.min(bounds.width, bounds.height) - 2;\n\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.circleStroke(bounds.left + 1, bounds.top + 1, size, new Color('#DEDEDE'), 1, new Color('#A5A5A5'));\n if (container.node.checked) {\n this.renderer.circle(Math.ceil(bounds.left + size / 4) + 1, Math.ceil(bounds.top + size / 4) + 1, Math.floor(size / 2), new Color('#424242'));\n }\n }, this, container);\n};\n\nNodeParser.prototype.paintFormValue = function(container) {\n var value = container.getValue();\n if (value.length > 0) {\n var document = container.node.ownerDocument;\n var wrapper = document.createElement('html2canvaswrapper');\n var properties = ['lineHeight', 'textAlign', 'fontFamily', 'fontWeight', 'fontSize', 'color',\n 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom',\n 'width', 'height', 'borderLeftStyle', 'borderTopStyle', 'borderLeftWidth', 'borderTopWidth',\n 'boxSizing', 'whiteSpace', 'wordWrap'];\n\n properties.forEach(function(property) {\n try {\n wrapper.style[property] = container.css(property);\n } catch(e) {\n // Older IE has issues with \"border\"\n log(\"html2canvas: Parse: Exception caught in renderFormValue: \" + e.message);\n }\n });\n var bounds = container.parseBounds();\n wrapper.style.position = \"fixed\";\n wrapper.style.left = bounds.left + \"px\";\n wrapper.style.top = bounds.top + \"px\";\n wrapper.textContent = value;\n document.body.appendChild(wrapper);\n this.paintText(new TextContainer(wrapper.firstChild, container));\n document.body.removeChild(wrapper);\n }\n};\n\nNodeParser.prototype.paintText = function(container) {\n container.applyTextTransform();\n var characters = punycode.ucs2.decode(container.node.data);\n var wordRendering = (!this.options.letterRendering || noLetterSpacing(container)) && !hasUnicode(container.node.data);\n var textList = wordRendering ? getWords(characters) : characters.map(function(character) {\n return punycode.ucs2.encode([character]);\n });\n if (!wordRendering) {\n container.parent.node.style.fontVariantLigatures = 'none';\n }\n\n var weight = container.parent.fontWeight();\n var size = container.parent.css('fontSize');\n var family = container.parent.css('fontFamily');\n var shadows = container.parent.parseTextShadows();\n\n this.renderer.font(container.parent.color('color'), container.parent.css('fontStyle'), container.parent.css('fontVariant'), weight, size, family);\n if (shadows.length) {\n // TODO: support multiple text shadows\n this.renderer.fontShadow(shadows[0].color, shadows[0].offsetX, shadows[0].offsetY, shadows[0].blur);\n } else {\n this.renderer.clearShadow();\n }\n\n this.renderer.clip(container.parent.clip, function() {\n textList.map(this.parseTextBounds(container), this).forEach(function(bounds, index) {\n if (bounds) {\n this.renderer.text(textList[index], bounds.left, bounds.bottom);\n this.renderTextDecoration(container.parent, bounds, this.fontMetrics.getMetrics(family, size));\n }\n }, this);\n }, this, container.parent);\n};\n\nNodeParser.prototype.renderTextDecoration = function(container, bounds, metrics) {\n switch(container.css(\"textDecoration\").split(\" \")[0]) {\n case \"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, need to take that into account both in position and size\n this.renderer.rectangle(bounds.left, Math.round(bounds.top + metrics.baseline + metrics.lineWidth), bounds.width, 1, container.color(\"color\"));\n break;\n case \"overline\":\n this.renderer.rectangle(bounds.left, Math.round(bounds.top), bounds.width, 1, container.color(\"color\"));\n break;\n case \"line-through\":\n // TODO try and find exact position for line-through\n this.renderer.rectangle(bounds.left, Math.ceil(bounds.top + metrics.middle + metrics.lineWidth), bounds.width, 1, container.color(\"color\"));\n break;\n }\n};\n\nvar borderColorTransforms = {\n inset: [\n [\"darken\", 0.60],\n [\"darken\", 0.10],\n [\"darken\", 0.10],\n [\"darken\", 0.60]\n ]\n};\n\nNodeParser.prototype.parseBorders = function(container) {\n var nodeBounds = container.parseBounds();\n var radius = getBorderRadiusData(container);\n var borders = [\"Top\", \"Right\", \"Bottom\", \"Left\"].map(function(side, index) {\n var style = container.css('border' + side + 'Style');\n var color = container.color('border' + side + 'Color');\n if (style === \"inset\" && color.isBlack()) {\n color = new Color([255, 255, 255, color.a]); // this is wrong, but\n }\n var colorTransform = borderColorTransforms[style] ? borderColorTransforms[style][index] : null;\n return {\n width: container.cssInt('border' + side + 'Width'),\n color: colorTransform ? color[colorTransform[0]](colorTransform[1]) : color,\n style: style,\n pathArgs: null,\n args: null\n };\n });\n var borderPoints = calculateCurvePoints(nodeBounds, radius, borders);\n\n return {\n clip: this.parseBackgroundClip(container, borderPoints, borders, radius, nodeBounds),\n borders: calculateBorders(borders, nodeBounds, borderPoints, radius)\n };\n};\n\nfunction calculateBorders(borders, nodeBounds, borderPoints, radius) {\n var pathBounds = {\n top: nodeBounds.top + borders[0].width/2,\n right: nodeBounds.right - borders[1].width/2,\n bottom: nodeBounds.bottom - borders[2].width/2,\n left: nodeBounds.left + borders[3].width/2\n };\n return borders.map(function(border, borderSide) {\n if (border.width > 0) {\n var bx = nodeBounds.left;\n var by = nodeBounds.top;\n var bw = nodeBounds.width;\n var bh = nodeBounds.height - (borders[2].width);\n\n switch(borderSide) {\n case 0:\n // top border\n bh = borders[0].width;\n border.args = drawSide({\n c1: [bx, by],\n c2: [bx + bw, by],\n c3: [bx + bw - borders[1].width, by + bh],\n c4: [bx + borders[3].width, by + bh]\n }, radius[0], radius[1],\n borderPoints.topLeftOuter, borderPoints.topLeftInner, borderPoints.topRightOuter, borderPoints.topRightInner);\n border.pathArgs = drawSidePath({\n c1: [pathBounds.left, pathBounds.top],\n c2: [pathBounds.right, pathBounds.top]\n }, radius[0], radius[1],\n borderPoints.topLeft, borderPoints.topRight);\n break;\n case 1:\n // right border\n bx = nodeBounds.left + nodeBounds.width - (borders[1].width);\n bw = borders[1].width;\n\n border.args = drawSide({\n c1: [bx + bw, by],\n c2: [bx + bw, by + bh + borders[2].width],\n c3: [bx, by + bh],\n c4: [bx, by + borders[0].width]\n }, radius[1], radius[2],\n borderPoints.topRightOuter, borderPoints.topRightInner, borderPoints.bottomRightOuter, borderPoints.bottomRightInner);\n border.pathArgs = drawSidePath({\n c1: [pathBounds.right, pathBounds.top],\n c2: [pathBounds.right, pathBounds.bottom]\n }, radius[1], radius[2],\n borderPoints.topRight, borderPoints.bottomRight);\n break;\n case 2:\n // bottom border\n by = (by + nodeBounds.height) - (borders[2].width);\n bh = borders[2].width;\n border.args = drawSide({\n c1: [bx + bw, by + bh],\n c2: [bx, by + bh],\n c3: [bx + borders[3].width, by],\n c4: [bx + bw - borders[3].width, by]\n }, radius[2], radius[3],\n borderPoints.bottomRightOuter, borderPoints.bottomRightInner, borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner);\n border.pathArgs = drawSidePath({\n c1: [pathBounds.right, pathBounds.bottom],\n c2: [pathBounds.left, pathBounds.bottom]\n }, radius[2], radius[3],\n borderPoints.bottomRight, borderPoints.bottomLeft);\n break;\n case 3:\n // left border\n bw = borders[3].width;\n border.args = drawSide({\n c1: [bx, by + bh + borders[2].width],\n c2: [bx, by],\n c3: [bx + bw, by + borders[0].width],\n c4: [bx + bw, by + bh]\n }, radius[3], radius[0],\n borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner, borderPoints.topLeftOuter, borderPoints.topLeftInner);\n border.pathArgs = drawSidePath({\n c1: [pathBounds.left, pathBounds.bottom],\n c2: [pathBounds.left, pathBounds.top]\n }, radius[3], radius[0],\n borderPoints.bottomLeft, borderPoints.topLeft);\n break;\n }\n }\n return border;\n });\n}\n\nNodeParser.prototype.parseBackgroundClip = function(container, borderPoints, borders, radius, bounds) {\n var backgroundClip = container.css('backgroundClip'),\n borderArgs = [];\n\n switch(backgroundClip) {\n case \"content-box\":\n case \"padding-box\":\n parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftInner, borderPoints.topRightInner, bounds.left + borders[3].width, bounds.top + borders[0].width);\n parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightInner, borderPoints.bottomRightInner, bounds.left + bounds.width - borders[1].width, bounds.top + borders[0].width);\n parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightInner, borderPoints.bottomLeftInner, bounds.left + bounds.width - borders[1].width, bounds.top + bounds.height - borders[2].width);\n parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftInner, borderPoints.topLeftInner, bounds.left + borders[3].width, bounds.top + bounds.height - borders[2].width);\n break;\n\n default:\n parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftOuter, borderPoints.topRightOuter, bounds.left, bounds.top);\n parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightOuter, borderPoints.bottomRightOuter, bounds.left + bounds.width, bounds.top);\n parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightOuter, borderPoints.bottomLeftOuter, bounds.left + bounds.width, bounds.top + bounds.height);\n parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftOuter, borderPoints.topLeftOuter, bounds.left, bounds.top + bounds.height);\n break;\n }\n\n return borderArgs;\n};\n\nfunction getCurvePoints(x, y, r1, r2) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = (r1) * kappa, // control point offset horizontal\n oy = (r2) * kappa, // control point offset vertical\n xm = x + r1, // x-middle\n ym = y + r2; // y-middle\n return {\n topLeft: bezierCurve({x: x, y: ym}, {x: x, y: ym - oy}, {x: xm - ox, y: y}, {x: xm, y: y}),\n topRight: bezierCurve({x: x, y: y}, {x: x + ox,y: y}, {x: xm, y: ym - oy}, {x: xm, y: ym}),\n bottomRight: bezierCurve({x: xm, y: y}, {x: xm, y: y + oy}, {x: x + ox, y: ym}, {x: x, y: ym}),\n bottomLeft: bezierCurve({x: xm, y: ym}, {x: xm - ox, y: ym}, {x: x, y: y + oy}, {x: x, y:y})\n };\n}\n\nfunction calculateCurvePoints(bounds, borderRadius, borders) {\n var x = bounds.left,\n y = bounds.top,\n width = bounds.width,\n height = bounds.height,\n\n tlh = borderRadius[0][0] < width / 2 ? borderRadius[0][0] : width / 2,\n tlv = borderRadius[0][1] < height / 2 ? borderRadius[0][1] : height / 2,\n trh = borderRadius[1][0] < width / 2 ? borderRadius[1][0] : width / 2,\n trv = borderRadius[1][1] < height / 2 ? borderRadius[1][1] : height / 2,\n brh = borderRadius[2][0] < width / 2 ? borderRadius[2][0] : width / 2,\n brv = borderRadius[2][1] < height / 2 ? borderRadius[2][1] : height / 2,\n blh = borderRadius[3][0] < width / 2 ? borderRadius[3][0] : width / 2,\n blv = borderRadius[3][1] < height / 2 ? borderRadius[3][1] : height / 2;\n\n var topWidth = width - trh,\n rightHeight = height - brv,\n bottomWidth = width - brh,\n leftHeight = height - blv;\n\n return {\n topLeft: getCurvePoints(x + borders[3].width/2, y + borders[0].width/2, Math.max(0, tlh - borders[3].width/2), Math.max(0, tlv - borders[0].width/2)).topLeft.subdivide(0.5),\n topRight: getCurvePoints(x + Math.min(topWidth, width + borders[3].width/2), y + borders[0].width/2, (topWidth > width + borders[3].width/2) ? 0 :trh - borders[3].width/2, trv - borders[0].width/2).topRight.subdivide(0.5),\n bottomRight: getCurvePoints(x + Math.min(bottomWidth, width - borders[3].width/2), y + Math.min(rightHeight, height + borders[0].width/2), Math.max(0, brh - borders[1].width/2), brv - borders[2].width/2).bottomRight.subdivide(0.5),\n bottomLeft: getCurvePoints(x + borders[3].width/2, y + leftHeight, Math.max(0, blh - borders[3].width/2), blv - borders[2].width/2).bottomLeft.subdivide(0.5),\n\n topLeftOuter: getCurvePoints(x, y, tlh, tlv).topLeft.subdivide(0.5),\n topLeftInner: getCurvePoints(x + borders[3].width, y + borders[0].width, Math.max(0, tlh - borders[3].width), Math.max(0, tlv - borders[0].width)).topLeft.subdivide(0.5),\n topRightOuter: getCurvePoints(x + topWidth, y, trh, trv).topRight.subdivide(0.5),\n topRightInner: getCurvePoints(x + Math.min(topWidth, width + borders[3].width), y + borders[0].width, (topWidth > width + borders[3].width) ? 0 :trh - borders[3].width, trv - borders[0].width).topRight.subdivide(0.5),\n bottomRightOuter: getCurvePoints(x + bottomWidth, y + rightHeight, brh, brv).bottomRight.subdivide(0.5),\n bottomRightInner: getCurvePoints(x + Math.min(bottomWidth, width - borders[3].width), y + Math.min(rightHeight, height + borders[0].width), Math.max(0, brh - borders[1].width), brv - borders[2].width).bottomRight.subdivide(0.5),\n bottomLeftOuter: getCurvePoints(x, y + leftHeight, blh, blv).bottomLeft.subdivide(0.5),\n bottomLeftInner: getCurvePoints(x + borders[3].width, y + leftHeight, Math.max(0, blh - borders[3].width), blv - borders[2].width).bottomLeft.subdivide(0.5)\n };\n}\n\nfunction bezierCurve(start, startControl, endControl, end) {\n var lerp = function (a, b, t) {\n return {\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t\n };\n };\n\n return {\n start: start,\n startControl: startControl,\n endControl: endControl,\n end: end,\n subdivide: function(t) {\n var ab = lerp(start, startControl, t),\n bc = lerp(startControl, endControl, t),\n cd = lerp(endControl, end, t),\n abbc = lerp(ab, bc, t),\n bccd = lerp(bc, cd, t),\n dest = lerp(abbc, bccd, t);\n return [bezierCurve(start, ab, abbc, dest), bezierCurve(dest, bccd, cd, end)];\n },\n curveTo: function(borderArgs) {\n borderArgs.push([\"bezierCurve\", startControl.x, startControl.y, endControl.x, endControl.y, end.x, end.y]);\n },\n curveToReversed: function(borderArgs) {\n borderArgs.push([\"bezierCurve\", endControl.x, endControl.y, startControl.x, startControl.y, start.x, start.y]);\n }\n };\n}\n\nfunction drawSide(borderData, radius1, radius2, outer1, inner1, outer2, inner2) {\n var borderArgs = [];\n\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", outer1[1].start.x, outer1[1].start.y]);\n outer1[1].curveTo(borderArgs);\n } else {\n borderArgs.push([ \"line\", borderData.c1[0], borderData.c1[1]]);\n }\n\n if (radius2[0] > 0 || radius2[1] > 0) {\n borderArgs.push([\"line\", outer2[0].start.x, outer2[0].start.y]);\n outer2[0].curveTo(borderArgs);\n borderArgs.push([\"line\", inner2[0].end.x, inner2[0].end.y]);\n inner2[0].curveToReversed(borderArgs);\n } else {\n borderArgs.push([\"line\", borderData.c2[0], borderData.c2[1]]);\n borderArgs.push([\"line\", borderData.c3[0], borderData.c3[1]]);\n }\n\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", inner1[1].end.x, inner1[1].end.y]);\n inner1[1].curveToReversed(borderArgs);\n } else {\n borderArgs.push([\"line\", borderData.c4[0], borderData.c4[1]]);\n }\n\n return borderArgs;\n}\n\nfunction drawSidePath(borderData, radius1, radius2, curve1, curve2) {\n var borderArgs = [];\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", curve1[1].start.x, curve1[1].start.y]);\n curve1[1].curveTo(borderArgs);\n } else {\n borderArgs.push([ \"line\", borderData.c1[0], borderData.c1[1]]);\n }\n if (radius2[0] > 0 || radius2[1] > 0) {\n borderArgs.push([\"line\", curve2[0].start.x, curve2[0].start.y]);\n curve2[0].curveTo(borderArgs);\n } else {\n borderArgs.push([ \"line\", borderData.c2[0], borderData.c2[1]]);\n }\n\n return borderArgs;\n}\n\nfunction parseCorner(borderArgs, radius1, radius2, corner1, corner2, x, y) {\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", corner1[0].start.x, corner1[0].start.y]);\n corner1[0].curveTo(borderArgs);\n corner1[1].curveTo(borderArgs);\n } else {\n borderArgs.push([\"line\", x, y]);\n }\n\n if (radius2[0] > 0 || radius2[1] > 0) {\n borderArgs.push([\"line\", corner2[0].start.x, corner2[0].start.y]);\n }\n}\n\nfunction negativeZIndex(container) {\n return container.cssInt(\"zIndex\") < 0;\n}\n\nfunction positiveZIndex(container) {\n return container.cssInt(\"zIndex\") > 0;\n}\n\nfunction zIndex0(container) {\n return container.cssInt(\"zIndex\") === 0;\n}\n\nfunction inlineLevel(container) {\n return [\"inline\", \"inline-block\", \"inline-table\"].indexOf(container.css(\"display\")) !== -1;\n}\n\nfunction isStackingContext(container) {\n return (container instanceof StackingContext);\n}\n\nfunction hasText(container) {\n return container.node.data.trim().length > 0;\n}\n\nfunction noLetterSpacing(container) {\n return (/^(normal|none|0px)$/.test(container.parent.css(\"letterSpacing\")));\n}\n\nfunction getBorderRadiusData(container) {\n return [\"TopLeft\", \"TopRight\", \"BottomRight\", \"BottomLeft\"].map(function(side) {\n var value = container.css('border' + side + 'Radius');\n var arr = value.split(\" \");\n if (arr.length <= 1) {\n arr[1] = arr[0];\n }\n return arr.map(asInt);\n });\n}\n\nfunction renderableNode(node) {\n return (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE);\n}\n\nfunction isPositionedForStacking(container) {\n var position = container.css(\"position\");\n var zIndex = ([\"absolute\", \"relative\", \"fixed\"].indexOf(position) !== -1) ? container.css(\"zIndex\") : \"auto\";\n return zIndex !== \"auto\";\n}\n\nfunction isPositioned(container) {\n return container.css(\"position\") !== \"static\";\n}\n\nfunction isFloating(container) {\n return container.css(\"float\") !== \"none\";\n}\n\nfunction isInlineBlock(container) {\n return [\"inline-block\", \"inline-table\"].indexOf(container.css(\"display\")) !== -1;\n}\n\nfunction not(callback) {\n var context = this;\n return function() {\n return !callback.apply(context, arguments);\n };\n}\n\nfunction isElement(container) {\n return container.node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction isPseudoElement(container) {\n return container.isPseudoElement === true;\n}\n\nfunction isTextNode(container) {\n return container.node.nodeType === Node.TEXT_NODE;\n}\n\nfunction zIndexSort(contexts) {\n return function(a, b) {\n return (a.cssInt(\"zIndex\") + (contexts.indexOf(a) / contexts.length)) - (b.cssInt(\"zIndex\") + (contexts.indexOf(b) / contexts.length));\n };\n}\n\nfunction hasOpacity(container) {\n return container.getOpacity() < 1;\n}\n\nfunction asInt(value) {\n return parseInt(value, 10);\n}\n\nfunction getWidth(border) {\n return border.width;\n}\n\nfunction nonIgnoredElement(nodeContainer) {\n return (nodeContainer.node.nodeType !== Node.ELEMENT_NODE || [\"SCRIPT\", \"HEAD\", \"TITLE\", \"OBJECT\", \"BR\", \"OPTION\"].indexOf(nodeContainer.node.nodeName) === -1);\n}\n\nfunction flatten(arrays) {\n return [].concat.apply([], arrays);\n}\n\nfunction stripQuotes(content) {\n var first = content.substr(0, 1);\n return (first === content.substr(content.length - 1) && first.match(/'|\"/)) ? content.substr(1, content.length - 2) : content;\n}\n\nfunction getWords(characters) {\n var words = [], i = 0, onWordBoundary = false, word;\n while(characters.length) {\n if (isWordBoundary(characters[i]) === onWordBoundary) {\n word = characters.splice(0, i);\n if (word.length) {\n words.push(punycode.ucs2.encode(word));\n }\n onWordBoundary =! onWordBoundary;\n i = 0;\n } else {\n i++;\n }\n\n if (i >= characters.length) {\n word = characters.splice(0, i);\n if (word.length) {\n words.push(punycode.ucs2.encode(word));\n }\n }\n }\n return words;\n}\n\nfunction isWordBoundary(characterCode) {\n return [\n 32, // <space>\n 13, // \\r\n 10, // \\n\n 9, // \\t\n 45 // -\n ].indexOf(characterCode) !== -1;\n}\n\nfunction hasUnicode(string) {\n return (/[^\\u0000-\\u00ff]/).test(string);\n}\n\nmodule.exports = NodeParser;\n\n},{\"./color\":3,\"./fontmetrics\":7,\"./log\":13,\"./nodecontainer\":14,\"./pseudoelementcontainer\":18,\"./stackingcontext\":21,\"./textcontainer\":25,\"./utils\":26,\"punycode\":1}],16:[function(_dereq_,module,exports){\nvar XHR = _dereq_('./xhr');\nvar utils = _dereq_('./utils');\nvar log = _dereq_('./log');\nvar createWindowClone = _dereq_('./clone');\nvar decode64 = utils.decode64;\n\nfunction Proxy(src, proxyUrl, document) {\n var supportsCORS = ('withCredentials' in new XMLHttpRequest());\n if (!proxyUrl) {\n return Promise.reject(\"No proxy configured\");\n }\n var callback = createCallback(supportsCORS);\n var url = createProxyUrl(proxyUrl, src, callback);\n\n return supportsCORS ? XHR(url) : (jsonp(document, url, callback).then(function(response) {\n return decode64(response.content);\n }));\n}\nvar proxyCount = 0;\n\nfunction ProxyURL(src, proxyUrl, document) {\n var supportsCORSImage = ('crossOrigin' in new Image());\n var callback = createCallback(supportsCORSImage);\n var url = createProxyUrl(proxyUrl, src, callback);\n return (supportsCORSImage ? Promise.resolve(url) : jsonp(document, url, callback).then(function(response) {\n return \"data:\" + response.type + \";base64,\" + response.content;\n }));\n}\n\nfunction jsonp(document, url, callback) {\n return new Promise(function(resolve, reject) {\n var s = document.createElement(\"script\");\n var cleanup = function() {\n delete window.html2canvas.proxy[callback];\n document.body.removeChild(s);\n };\n window.html2canvas.proxy[callback] = function(response) {\n cleanup();\n resolve(response);\n };\n s.src = url;\n s.onerror = function(e) {\n cleanup();\n reject(e);\n };\n document.body.appendChild(s);\n });\n}\n\nfunction createCallback(useCORS) {\n return !useCORS ? \"html2canvas_\" + Date.now() + \"_\" + (++proxyCount) + \"_\" + Math.round(Math.random() * 100000) : \"\";\n}\n\nfunction createProxyUrl(proxyUrl, src, callback) {\n return proxyUrl + \"?url=\" + encodeURIComponent(src) + (callback.length ? \"&callback=html2canvas.proxy.\" + callback : \"\");\n}\n\nfunction documentFromHTML(src) {\n return function(html) {\n var parser = new DOMParser(), doc;\n try {\n doc = parser.parseFromString(html, \"text/html\");\n } catch(e) {\n log(\"DOMParser not supported, falling back to createHTMLDocument\");\n doc = document.implementation.createHTMLDocument(\"\");\n try {\n doc.open();\n doc.write(html);\n doc.close();\n } catch(ee) {\n log(\"createHTMLDocument write not supported, falling back to document.body.innerHTML\");\n doc.body.innerHTML = html; // ie9 doesnt support writing to documentElement\n }\n }\n\n var b = doc.querySelector(\"base\");\n if (!b || !b.href.host) {\n var base = doc.createElement(\"base\");\n base.href = src;\n doc.head.insertBefore(base, doc.head.firstChild);\n }\n\n return doc;\n };\n}\n\nfunction loadUrlDocument(src, proxy, document, width, height, options) {\n return new Proxy(src, proxy, window.document).then(documentFromHTML(src)).then(function(doc) {\n return createWindowClone(doc, document, width, height, options, 0, 0);\n });\n}\n\nexports.Proxy = Proxy;\nexports.ProxyURL = ProxyURL;\nexports.loadUrlDocument = loadUrlDocument;\n\n},{\"./clone\":2,\"./log\":13,\"./utils\":26,\"./xhr\":28}],17:[function(_dereq_,module,exports){\nvar ProxyURL = _dereq_('./proxy').ProxyURL;\n\nfunction ProxyImageContainer(src, proxy) {\n var link = document.createElement(\"a\");\n link.href = src;\n src = link.href;\n this.src = src;\n this.image = new Image();\n var self = this;\n this.promise = new Promise(function(resolve, reject) {\n self.image.crossOrigin = \"Anonymous\";\n self.image.onload = resolve;\n self.image.onerror = reject;\n\n new ProxyURL(src, proxy, document).then(function(url) {\n self.image.src = url;\n })['catch'](reject);\n });\n}\n\nmodule.exports = ProxyImageContainer;\n\n},{\"./proxy\":16}],18:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction PseudoElementContainer(node, parent, type) {\n NodeContainer.call(this, node, parent);\n this.isPseudoElement = true;\n this.before = type === \":before\";\n}\n\nPseudoElementContainer.prototype.cloneTo = function(stack) {\n PseudoElementContainer.prototype.cloneTo.call(this, stack);\n stack.isPseudoElement = true;\n stack.before = this.before;\n};\n\nPseudoElementContainer.prototype = Object.create(NodeContainer.prototype);\n\nPseudoElementContainer.prototype.appendToDOM = function() {\n if (this.before) {\n this.parent.node.insertBefore(this.node, this.parent.node.firstChild);\n } else {\n this.parent.node.appendChild(this.node);\n }\n this.parent.node.className += \" \" + this.getHideClass();\n};\n\nPseudoElementContainer.prototype.cleanDOM = function() {\n this.node.parentNode.removeChild(this.node);\n this.parent.node.className = this.parent.node.className.replace(this.getHideClass(), \"\");\n};\n\nPseudoElementContainer.prototype.getHideClass = function() {\n return this[\"PSEUDO_HIDE_ELEMENT_CLASS_\" + (this.before ? \"BEFORE\" : \"AFTER\")];\n};\n\nPseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = \"___html2canvas___pseudoelement_before\";\nPseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER = \"___html2canvas___pseudoelement_after\";\n\nmodule.exports = PseudoElementContainer;\n\n},{\"./nodecontainer\":14}],19:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\n\nfunction Renderer(width, height, images, options, document) {\n this.width = width;\n this.height = height;\n this.images = images;\n this.options = options;\n this.document = document;\n}\n\nRenderer.prototype.renderImage = function(container, bounds, borderData, imageContainer) {\n var paddingLeft = container.cssInt('paddingLeft'),\n paddingTop = container.cssInt('paddingTop'),\n paddingRight = container.cssInt('paddingRight'),\n paddingBottom = container.cssInt('paddingBottom'),\n borders = borderData.borders;\n\n var width = bounds.width - (borders[1].width + borders[3].width + paddingLeft + paddingRight);\n var height = bounds.height - (borders[0].width + borders[2].width + paddingTop + paddingBottom);\n this.drawImage(\n imageContainer,\n 0,\n 0,\n imageContainer.image.width || width,\n imageContainer.image.height || height,\n bounds.left + paddingLeft + borders[3].width,\n bounds.top + paddingTop + borders[0].width,\n width,\n height\n );\n};\n\nRenderer.prototype.renderBackground = function(container, bounds, borderData) {\n if (bounds.height > 0 && bounds.width > 0) {\n this.renderBackgroundColor(container, bounds);\n this.renderBackgroundImage(container, bounds, borderData);\n }\n};\n\nRenderer.prototype.renderBackgroundColor = function(container, bounds) {\n var color = container.color(\"backgroundColor\");\n if (!color.isTransparent()) {\n this.rectangle(bounds.left, bounds.top, bounds.width, bounds.height, color);\n }\n};\n\nRenderer.prototype.renderShadows = function(container, shape) {\n var boxShadow = container.css('boxShadow');\n if (boxShadow !== 'none') {\n var shadows = boxShadow.split(/,(?![^(]*\\))/);\n this.shadow(shape, shadows);\n }\n};\n\nRenderer.prototype.renderBorders = function(borders) {\n borders.forEach(this.renderBorder, this);\n};\n\nRenderer.prototype.renderBorder = function(data) {\n if (!data.color.isTransparent() && data.args !== null) {\n if (data.style === 'dashed' || data.style === 'dotted') {\n var dash = (data.style === 'dashed') ? 3 : data.width;\n this.ctx.setLineDash([dash]);\n this.path(data.pathArgs);\n this.ctx.strokeStyle = data.color;\n this.ctx.lineWidth = data.width;\n this.ctx.stroke();\n } else {\n this.drawShape(data.args, data.color);\n }\n }\n};\n\nRenderer.prototype.renderBackgroundImage = function(container, bounds, borderData) {\n var backgroundImages = container.parseBackgroundImages();\n backgroundImages.reverse().forEach(function(backgroundImage, index, arr) {\n switch(backgroundImage.method) {\n case \"url\":\n var image = this.images.get(backgroundImage.args[0]);\n if (image) {\n this.renderBackgroundRepeating(container, bounds, image, arr.length - (index+1), borderData);\n } else {\n log(\"Error loading background-image\", backgroundImage.args[0]);\n }\n break;\n case \"linear-gradient\":\n case \"gradient\":\n var gradientImage = this.images.get(backgroundImage.value);\n if (gradientImage) {\n this.renderBackgroundGradient(gradientImage, bounds, borderData);\n } else {\n log(\"Error loading background-image\", backgroundImage.args[0]);\n }\n break;\n case \"none\":\n break;\n default:\n log(\"Unknown background-image type\", backgroundImage.args[0]);\n }\n }, this);\n};\n\nRenderer.prototype.renderBackgroundRepeating = function(container, bounds, imageContainer, index, borderData) {\n var size = container.parseBackgroundSize(bounds, imageContainer.image, index);\n var position = container.parseBackgroundPosition(bounds, imageContainer.image, index, size);\n var repeat = container.parseBackgroundRepeat(index);\n switch (repeat) {\n case \"repeat-x\":\n case \"repeat no-repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + borderData[3], bounds.top + position.top + borderData[0], 99999, size.height, borderData);\n break;\n case \"repeat-y\":\n case \"no-repeat repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + position.left + borderData[3], bounds.top + borderData[0], size.width, 99999, borderData);\n break;\n case \"no-repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + position.left + borderData[3], bounds.top + position.top + borderData[0], size.width, size.height, borderData);\n break;\n default:\n this.renderBackgroundRepeat(imageContainer, position, size, {top: bounds.top, left: bounds.left}, borderData[3], borderData[0]);\n break;\n }\n};\n\nmodule.exports = Renderer;\n\n},{\"./log\":13}],20:[function(_dereq_,module,exports){\nvar Renderer = _dereq_('../renderer');\nvar LinearGradientContainer = _dereq_('../lineargradientcontainer');\nvar log = _dereq_('../log');\n\nfunction CanvasRenderer(width, height) {\n Renderer.apply(this, arguments);\n this.canvas = this.options.canvas || this.document.createElement(\"canvas\");\n this.ctx = this.canvas.getContext(\"2d\");\n if (!this.options.canvas) {\n if (this.options.dpi) {\n this.options.scale = this.options.dpi / 96; // 1 CSS inch = 96px.\n }\n if (this.options.scale) {\n this.canvas.style.width = width + 'px';\n this.canvas.style.height = height + 'px';\n this.canvas.width = Math.floor(width * this.options.scale);\n this.canvas.height = Math.floor(height * this.options.scale);\n this.ctx.scale(this.options.scale, this.options.scale);\n } else {\n this.canvas.width = width;\n this.canvas.height = height;\n }\n }\n this.taintCtx = this.document.createElement(\"canvas\").getContext(\"2d\");\n this.ctx.textBaseline = \"bottom\";\n this.variables = {};\n log(\"Initialized CanvasRenderer with size\", width, \"x\", height);\n}\n\nCanvasRenderer.prototype = Object.create(Renderer.prototype);\n\nCanvasRenderer.prototype.setFillStyle = function(fillStyle) {\n this.ctx.fillStyle = typeof(fillStyle) === \"object\" && !!fillStyle.isColor ? fillStyle.toString() : fillStyle;\n return this.ctx;\n};\n\nCanvasRenderer.prototype.rectangle = function(left, top, width, height, color) {\n this.setFillStyle(color).fillRect(left, top, width, height);\n};\n\nCanvasRenderer.prototype.circle = function(left, top, size, color) {\n this.setFillStyle(color);\n this.ctx.beginPath();\n this.ctx.arc(left + size / 2, top + size / 2, size / 2, 0, Math.PI*2, true);\n this.ctx.closePath();\n this.ctx.fill();\n};\n\nCanvasRenderer.prototype.circleStroke = function(left, top, size, color, stroke, strokeColor) {\n this.circle(left, top, size, color);\n this.ctx.strokeStyle = strokeColor.toString();\n this.ctx.stroke();\n};\n\nCanvasRenderer.prototype.shadow = function(shape, shadows) {\n var parseShadow = function(str) {\n var propertyFilters = { color: /^(#|rgb|hsl|(?!(inset|initial|inherit))\\D+)/i, inset: /^inset/i, px: /px$/i };\n var pxPropertyNames = [ 'x', 'y', 'blur', 'spread' ];\n var properties = str.split(/ (?![^(]*\\))/);\n var info = {};\n for (var key in propertyFilters) {\n info[key] = properties.filter(propertyFilters[key].test.bind(propertyFilters[key]));\n info[key] = info[key].length === 0 ? null : info[key].length === 1 ? info[key][0] : info[key];\n }\n for (var i=0; i<info.px.length; i++) {\n info[pxPropertyNames[i]] = parseInt(info.px[i]);\n }\n return info;\n };\n var drawShadow = function(shadow) {\n var info = parseShadow(shadow);\n if (!info.inset) {\n context.shadowOffsetX = info.x;\n context.shadowOffsetY = info.y;\n context.shadowColor = info.color;\n context.shadowBlur = info.blur;\n context.fill();\n }\n };\n var context = this.setFillStyle('white');\n context.save();\n this.shape(shape);\n shadows.forEach(drawShadow, this);\n context.restore();\n};\n\nCanvasRenderer.prototype.drawShape = function(shape, color) {\n this.shape(shape);\n this.setFillStyle(color).fill();\n};\n\nCanvasRenderer.prototype.taints = function(imageContainer) {\n if (imageContainer.tainted === null) {\n this.taintCtx.drawImage(imageContainer.image, 0, 0);\n try {\n this.taintCtx.getImageData(0, 0, 1, 1);\n imageContainer.tainted = false;\n } catch(e) {\n this.taintCtx = document.createElement(\"canvas\").getContext(\"2d\");\n imageContainer.tainted = true;\n }\n }\n\n return imageContainer.tainted;\n};\n\nCanvasRenderer.prototype.drawImage = function(imageContainer, sx, sy, sw, sh, dx, dy, dw, dh) {\n if (!this.taints(imageContainer) || this.options.allowTaint) {\n this.ctx.drawImage(imageContainer.image, sx, sy, sw, sh, dx, dy, dw, dh);\n }\n};\n\nCanvasRenderer.prototype.clip = function(shapes, callback, context, container) {\n this.ctx.save();\n if (container && container.hasTransform()) {\n this.setTransform(container.inverseTransform());\n shapes.filter(hasEntries).forEach(function(shape) {\n this.shape(shape).clip();\n }, this);\n this.setTransform(container.parseTransform());\n } else {\n shapes.filter(hasEntries).forEach(function(shape) {\n this.shape(shape).clip();\n }, this);\n }\n callback.call(context);\n this.ctx.restore();\n};\n\nCanvasRenderer.prototype.mask = function(shapes, callback, context, container) {\n var borderClip = shapes[shapes.length-1];\n if (borderClip && borderClip.length) {\n var canvasBorderCCW = [\"rect\", this.canvas.width, 0, -this.canvas.width, this.canvas.height];\n var maskShape = [canvasBorderCCW].concat(borderClip).concat([borderClip[0]]);\n shapes = shapes.slice(0,-1).concat([maskShape]);\n }\n this.clip(shapes, callback, context, container);\n};\n\nCanvasRenderer.prototype.shape = function(shape) {\n this.ctx.beginPath();\n shape.forEach(function(point, index) {\n if (point[0] === \"rect\") {\n this.ctx.rect.apply(this.ctx, point.slice(1));\n } else {\n this.ctx[(index === 0) ? \"moveTo\" : point[0] + \"To\" ].apply(this.ctx, point.slice(1));\n }\n }, this);\n this.ctx.closePath();\n return this.ctx;\n};\n\nCanvasRenderer.prototype.path = function(shape) {\n this.ctx.beginPath();\n shape.forEach(function(point, index) {\n if (point[0] === \"rect\") {\n this.ctx.rect.apply(this.ctx, point.slice(1));\n } else {\n this.ctx[(index === 0) ? \"moveTo\" : point[0] + \"To\" ].apply(this.ctx, point.slice(1));\n }\n }, this);\n return this.ctx;\n};\n\nCanvasRenderer.prototype.font = function(color, style, variant, weight, size, family) {\n variant = /^(normal|small-caps)$/i.test(variant) ? variant : '';\n this.setFillStyle(color).font = [style, variant, weight, size, family].join(\" \").split(\",\")[0];\n};\n\nCanvasRenderer.prototype.fontShadow = function(color, offsetX, offsetY, blur) {\n this.setVariable(\"shadowColor\", color.toString())\n .setVariable(\"shadowOffsetY\", offsetX)\n .setVariable(\"shadowOffsetX\", offsetY)\n .setVariable(\"shadowBlur\", blur);\n};\n\nCanvasRenderer.prototype.clearShadow = function() {\n this.setVariable(\"shadowColor\", \"rgba(0,0,0,0)\");\n};\n\nCanvasRenderer.prototype.setOpacity = function(opacity) {\n this.ctx.globalAlpha = opacity;\n};\n\nCanvasRenderer.prototype.setTransform = function(transform) {\n this.ctx.translate(transform.origin[0], transform.origin[1]);\n this.ctx.transform.apply(this.ctx, transform.matrix);\n this.ctx.translate(-transform.origin[0], -transform.origin[1]);\n};\n\nCanvasRenderer.prototype.setVariable = function(property, value) {\n if (this.variables[property] !== value) {\n this.variables[property] = this.ctx[property] = value;\n }\n\n return this;\n};\n\nCanvasRenderer.prototype.text = function(text, left, bottom) {\n this.ctx.fillText(text, left, bottom);\n};\n\nCanvasRenderer.prototype.backgroundRepeatShape = function(imageContainer, backgroundPosition, size, bounds, left, top, width, height, borderData) {\n var shape = [\n [\"line\", Math.round(left), Math.round(top)],\n [\"line\", Math.round(left + width), Math.round(top)],\n [\"line\", Math.round(left + width), Math.round(height + top)],\n [\"line\", Math.round(left), Math.round(height + top)]\n ];\n this.clip([shape], function() {\n this.renderBackgroundRepeat(imageContainer, backgroundPosition, size, bounds, borderData[3], borderData[0]);\n }, this);\n};\n\nCanvasRenderer.prototype.renderBackgroundRepeat = function(imageContainer, backgroundPosition, size, bounds, borderLeft, borderTop) {\n var offsetX = Math.round(bounds.left + backgroundPosition.left + borderLeft), offsetY = Math.round(bounds.top + backgroundPosition.top + borderTop);\n this.setFillStyle(this.ctx.createPattern(this.resizeImage(imageContainer, size), \"repeat\"));\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n};\n\nCanvasRenderer.prototype.renderBackgroundGradient = function(gradientImage, bounds) {\n if (gradientImage instanceof LinearGradientContainer) {\n var gradient = this.ctx.createLinearGradient(\n bounds.left + bounds.width * gradientImage.x0,\n bounds.top + bounds.height * gradientImage.y0,\n bounds.left + bounds.width * gradientImage.x1,\n bounds.top + bounds.height * gradientImage.y1);\n gradientImage.colorStops.forEach(function(colorStop) {\n gradient.addColorStop(colorStop.stop, colorStop.color.toString());\n });\n this.rectangle(bounds.left, bounds.top, bounds.width, bounds.height, gradient);\n }\n};\n\nCanvasRenderer.prototype.resizeImage = function(imageContainer, size) {\n var image = imageContainer.image;\n if(image.width === size.width && image.height === size.height) {\n return image;\n }\n\n var ctx, canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height );\n return canvas;\n};\n\nfunction hasEntries(array) {\n return array.length > 0;\n}\n\nmodule.exports = CanvasRenderer;\n\n},{\"../lineargradientcontainer\":12,\"../log\":13,\"../renderer\":19}],21:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction StackingContext(hasOwnStacking, opacity, element, parent) {\n NodeContainer.call(this, element, parent);\n this.ownStacking = hasOwnStacking;\n this.contexts = [];\n this.children = [];\n this.opacity = (this.parent ? this.parent.stack.opacity : 1) * opacity;\n}\n\nStackingContext.prototype = Object.create(NodeContainer.prototype);\n\nStackingContext.prototype.getParentStack = function(context) {\n var parentStack = (this.parent) ? this.parent.stack : null;\n return parentStack ? (parentStack.ownStacking ? parentStack : parentStack.getParentStack(context)) : context.stack;\n};\n\nmodule.exports = StackingContext;\n\n},{\"./nodecontainer\":14}],22:[function(_dereq_,module,exports){\nfunction Support(document) {\n this.rangeBounds = this.testRangeBounds(document);\n this.cors = this.testCORS();\n this.svg = this.testSVG();\n}\n\nSupport.prototype.testRangeBounds = function(document) {\n var range, testElement, rangeBounds, rangeHeight, support = false;\n\n if (document.createRange) {\n range = document.createRange();\n if (range.getBoundingClientRect) {\n testElement = document.createElement('boundtest');\n testElement.style.height = \"123px\";\n testElement.style.display = \"block\";\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n rangeBounds = range.getBoundingClientRect();\n rangeHeight = rangeBounds.height;\n\n if (rangeHeight === 123) {\n support = true;\n }\n document.body.removeChild(testElement);\n }\n }\n\n return support;\n};\n\nSupport.prototype.testCORS = function() {\n return typeof((new Image()).crossOrigin) !== \"undefined\";\n};\n\nSupport.prototype.testSVG = function() {\n var img = new Image();\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\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\nmodule.exports = Support;\n\n},{}],23:[function(_dereq_,module,exports){\nvar XHR = _dereq_('./xhr');\nvar decode64 = _dereq_('./utils').decode64;\n\nfunction SVGContainer(src) {\n this.src = src;\n this.image = null;\n var self = this;\n\n this.promise = this.hasFabric().then(function() {\n return (self.isInline(src) ? Promise.resolve(self.inlineFormatting(src)) : XHR(src));\n }).then(function(svg) {\n return new Promise(function(resolve) {\n window.html2canvas.svg.fabric.loadSVGFromString(svg, self.createCanvas.call(self, resolve));\n });\n });\n}\n\nSVGContainer.prototype.hasFabric = function() {\n return !window.html2canvas.svg || !window.html2canvas.svg.fabric ? Promise.reject(new Error(\"html2canvas.svg.js is not loaded, cannot render svg\")) : Promise.resolve();\n};\n\nSVGContainer.prototype.inlineFormatting = function(src) {\n return (/^data:image\\/svg\\+xml;base64,/.test(src)) ? this.decode64(this.removeContentType(src)) : this.removeContentType(src);\n};\n\nSVGContainer.prototype.removeContentType = function(src) {\n return src.replace(/^data:image\\/svg\\+xml(;base64)?,/,'');\n};\n\nSVGContainer.prototype.isInline = function(src) {\n return (/^data:image\\/svg\\+xml/i.test(src));\n};\n\nSVGContainer.prototype.createCanvas = function(resolve) {\n var self = this;\n return function (objects, options) {\n var canvas = new window.html2canvas.svg.fabric.StaticCanvas('c');\n self.image = canvas.lowerCanvasEl;\n canvas\n .setWidth(options.width)\n .setHeight(options.height)\n .add(window.html2canvas.svg.fabric.util.groupSVGElements(objects, options))\n .renderAll();\n resolve(canvas.lowerCanvasEl);\n };\n};\n\nSVGContainer.prototype.decode64 = function(str) {\n return (typeof(window.atob) === \"function\") ? window.atob(str) : decode64(str);\n};\n\nmodule.exports = SVGContainer;\n\n},{\"./utils\":26,\"./xhr\":28}],24:[function(_dereq_,module,exports){\nvar SVGContainer = _dereq_('./svgcontainer');\n\nfunction SVGNodeContainer(node, _native) {\n this.src = node;\n this.image = null;\n var self = this;\n\n this.promise = _native ? new Promise(function(resolve, reject) {\n self.image = new Image();\n self.image.onload = resolve;\n self.image.onerror = reject;\n self.image.src = \"data:image/svg+xml,\" + (new XMLSerializer()).serializeToString(node);\n if (self.image.complete === true) {\n resolve(self.image);\n }\n }) : this.hasFabric().then(function() {\n return new Promise(function(resolve) {\n window.html2canvas.svg.fabric.parseSVGDocument(node, self.createCanvas.call(self, resolve));\n });\n });\n}\n\nSVGNodeContainer.prototype = Object.create(SVGContainer.prototype);\n\nmodule.exports = SVGNodeContainer;\n\n},{\"./svgcontainer\":23}],25:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction TextContainer(node, parent) {\n NodeContainer.call(this, node, parent);\n}\n\nTextContainer.prototype = Object.create(NodeContainer.prototype);\n\nTextContainer.prototype.applyTextTransform = function() {\n this.node.data = this.transform(this.parent.css(\"textTransform\"));\n};\n\nTextContainer.prototype.transform = function(transform) {\n var text = this.node.data;\n switch(transform){\n case \"lowercase\":\n return text.toLowerCase();\n case \"capitalize\":\n return text.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g, capitalize);\n case \"uppercase\":\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nfunction capitalize(m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n}\n\nmodule.exports = TextContainer;\n\n},{\"./nodecontainer\":14}],26:[function(_dereq_,module,exports){\nexports.smallImage = function smallImage() {\n return \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n};\n\nexports.bind = function(callback, context) {\n return function() {\n return callback.apply(context, arguments);\n };\n};\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nexports.decode64 = function(base64) {\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var len = base64.length, i, encoded1, encoded2, encoded3, encoded4, byte1, byte2, byte3;\n\n var output = \"\";\n\n for (i = 0; i < len; i+=4) {\n encoded1 = chars.indexOf(base64[i]);\n encoded2 = chars.indexOf(base64[i+1]);\n encoded3 = chars.indexOf(base64[i+2]);\n encoded4 = chars.indexOf(base64[i+3]);\n\n byte1 = (encoded1 << 2) | (encoded2 >> 4);\n byte2 = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n byte3 = ((encoded3 & 3) << 6) | encoded4;\n if (encoded3 === 64) {\n output += String.fromCharCode(byte1);\n } else if (encoded4 === 64 || encoded4 === -1) {\n output += String.fromCharCode(byte1, byte2);\n } else{\n output += String.fromCharCode(byte1, byte2, byte3);\n }\n }\n\n return output;\n};\n\nexports.getBounds = function(node) {\n if (node.getBoundingClientRect) {\n var clientRect = node.getBoundingClientRect();\n var width = node.offsetWidth == null ? clientRect.width : node.offsetWidth;\n return {\n top: clientRect.top,\n bottom: clientRect.bottom || (clientRect.top + clientRect.height),\n right: clientRect.left + width,\n left: clientRect.left,\n width: width,\n height: node.offsetHeight == null ? clientRect.height : node.offsetHeight\n };\n }\n return {};\n};\n\nexports.offsetBounds = function(node) {\n var parent = node.offsetParent ? exports.offsetBounds(node.offsetParent) : {top: 0, left: 0};\n\n return {\n top: node.offsetTop + parent.top,\n bottom: node.offsetTop + node.offsetHeight + parent.top,\n right: node.offsetLeft + parent.left + node.offsetWidth,\n left: node.offsetLeft + parent.left,\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n};\n\nexports.parseBackgrounds = function(backgroundImage) {\n var whitespace = ' \\r\\n\\t',\n method, definition, prefix, prefix_i, block, results = [],\n mode = 0, numParen = 0, quote, args;\n var appendResult = function() {\n if(method) {\n if (definition.substr(0, 1) === '\"') {\n definition = definition.substr(1, definition.length - 2);\n }\n if (definition) {\n args.push(definition);\n }\n if (method.substr(0, 1) === '-' && (prefix_i = method.indexOf('-', 1 ) + 1) > 0) {\n prefix = method.substr(0, prefix_i);\n method = method.substr(prefix_i);\n }\n results.push({\n prefix: prefix,\n method: method.toLowerCase(),\n value: block,\n args: args,\n image: null\n });\n }\n args = [];\n method = prefix = definition = block = '';\n };\n args = [];\n method = prefix = definition = block = '';\n backgroundImage.split(\"\").forEach(function(c) {\n if (mode === 0 && whitespace.indexOf(c) > -1) {\n return;\n }\n switch(c) {\n case '\"':\n if(!quote) {\n quote = c;\n } else if(quote === c) {\n quote = null;\n }\n break;\n case '(':\n if(quote) {\n break;\n } else if(mode === 0) {\n mode = 1;\n block += c;\n return;\n } else {\n numParen++;\n }\n break;\n case ')':\n if (quote) {\n break;\n } else if(mode === 1) {\n if(numParen === 0) {\n mode = 0;\n block += c;\n appendResult();\n return;\n } else {\n numParen--;\n }\n }\n break;\n\n case ',':\n if (quote) {\n break;\n } else if(mode === 0) {\n appendResult();\n return;\n } else if (mode === 1) {\n if (numParen === 0 && !method.match(/^url$/i)) {\n args.push(definition);\n definition = '';\n block += c;\n return;\n }\n }\n break;\n }\n\n block += c;\n if (mode === 0) {\n method += c;\n } else {\n definition += c;\n }\n });\n\n appendResult();\n return results;\n};\n\n},{}],27:[function(_dereq_,module,exports){\nvar GradientContainer = _dereq_('./gradientcontainer');\n\nfunction WebkitGradientContainer(imageData) {\n GradientContainer.apply(this, arguments);\n this.type = imageData.args[0] === \"linear\" ? GradientContainer.TYPES.LINEAR : GradientContainer.TYPES.RADIAL;\n}\n\nWebkitGradientContainer.prototype = Object.create(GradientContainer.prototype);\n\nmodule.exports = WebkitGradientContainer;\n\n},{\"./gradientcontainer\":9}],28:[function(_dereq_,module,exports){\nfunction XHR(url) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else {\n reject(new Error(xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error(\"Network Error\"));\n };\n\n xhr.send();\n });\n}\n\nmodule.exports = XHR;\n\n},{}]},{},[4])(4)\n});","/*\n html2canvas 0.5.0-beta3 <http://html2canvas.hertzen.com>\n Copyright (c) 2016 Niklas von Hertzen\n\n Released under License\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.html2canvas=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n/*! http://mths.be/punycode v1.2.4 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /\\x2E|\\u3002|\\uFF0E|\\uFF61/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\twhile (length--) {\n\t\t\tarray[length] = fn(array[length]);\n\t\t}\n\t\treturn array;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings.\n\t * @private\n\t * @param {String} domain The domain name.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\treturn map(string.split(regexSeparators), fn).join('.');\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <http://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols to a Punycode string of ASCII-only\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name to Unicode. Only the\n\t * Punycoded parts of the domain name will be converted, i.e. it doesn't\n\t * matter if you call it on a string that has already been converted to\n\t * Unicode.\n\t * @memberOf punycode\n\t * @param {String} domain The Punycode domain name to convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(domain) {\n\t\treturn mapDomain(domain, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name to Punycode. Only the\n\t * non-ASCII parts of the domain name will be converted, i.e. it doesn't\n\t * matter if you call it with a domain that's already in ASCII.\n\t * @memberOf punycode\n\t * @param {String} domain The domain name to convert, as a Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name.\n\t */\n\tfunction toASCII(domain) {\n\t\treturn mapDomain(domain, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.2.4',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <http://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\n\nfunction restoreOwnerScroll(ownerDocument, x, y) {\n if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n}\n\nfunction cloneCanvasContents(canvas, clonedCanvas) {\n try {\n if (clonedCanvas) {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n clonedCanvas.getContext(\"2d\").putImageData(canvas.getContext(\"2d\").getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n }\n } catch(e) {\n log(\"Unable to copy canvas content from\", canvas, e);\n }\n}\n\nfunction cloneNode(node, javascriptEnabled) {\n var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false);\n\n var child = node.firstChild;\n while(child) {\n if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n child = child.nextSibling;\n }\n\n if (node.nodeType === 1) {\n clone._scrollTop = node.scrollTop;\n clone._scrollLeft = node.scrollLeft;\n if (node.nodeName === \"CANVAS\") {\n cloneCanvasContents(node, clone);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n }\n\n return clone;\n}\n\nfunction initNode(node) {\n if (node.nodeType === 1) {\n node.scrollTop = node._scrollTop;\n node.scrollLeft = node._scrollLeft;\n\n var child = node.firstChild;\n while(child) {\n initNode(child);\n child = child.nextSibling;\n }\n }\n}\n\nmodule.exports = function(ownerDocument, containerDocument, width, height, options, x ,y) {\n var documentElement = cloneNode(ownerDocument.documentElement, options.javascriptEnabled);\n var container = containerDocument.createElement(\"iframe\");\n\n container.className = \"html2canvas-container\";\n container.style.visibility = \"hidden\";\n container.style.position = \"fixed\";\n container.style.left = \"-10000px\";\n container.style.top = \"0px\";\n container.style.border = \"0\";\n container.width = width;\n container.height = height;\n container.scrolling = \"no\"; // ios won't scroll without it\n containerDocument.body.appendChild(container);\n\n return new Promise(function(resolve) {\n var documentClone = container.contentWindow.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 container.contentWindow.onload = container.onload = function() {\n var interval = setInterval(function() {\n if (documentClone.body.childNodes.length > 0) {\n initNode(documentClone.documentElement);\n clearInterval(interval);\n if (options.type === \"view\") {\n container.contentWindow.scrollTo(x, y);\n if ((/(iPad|iPhone|iPod)/g).test(navigator.userAgent) && (container.contentWindow.scrollY !== y || container.contentWindow.scrollX !== x)) {\n documentClone.documentElement.style.top = (-y) + \"px\";\n documentClone.documentElement.style.left = (-x) + \"px\";\n documentClone.documentElement.style.position = 'absolute';\n }\n }\n resolve(container);\n }\n }, 50);\n };\n\n documentClone.open();\n documentClone.write(\"<!DOCTYPE html><html></html>\");\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(ownerDocument, x, y);\n documentClone.replaceChild(documentClone.adoptNode(documentElement), documentClone.documentElement);\n documentClone.close();\n });\n};\n\n},{\"./log\":13}],3:[function(_dereq_,module,exports){\n// http://dev.w3.org/csswg/css-color/\n\nfunction Color(value) {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = null;\n var result = this.fromArray(value) ||\n this.namedColor(value) ||\n this.rgb(value) ||\n this.rgba(value) ||\n this.hex6(value) ||\n this.hex3(value);\n}\n\nColor.prototype.darken = function(amount) {\n var a = 1 - amount;\n return new Color([\n Math.round(this.r * a),\n Math.round(this.g * a),\n Math.round(this.b * a),\n this.a\n ]);\n};\n\nColor.prototype.isTransparent = function() {\n return this.a === 0;\n};\n\nColor.prototype.isBlack = function() {\n return this.r === 0 && this.g === 0 && this.b === 0;\n};\n\nColor.prototype.fromArray = function(array) {\n if (Array.isArray(array)) {\n this.r = Math.min(array[0], 255);\n this.g = Math.min(array[1], 255);\n this.b = Math.min(array[2], 255);\n if (array.length > 3) {\n this.a = array[3];\n }\n }\n\n return (Array.isArray(array));\n};\n\nvar _hex3 = /^#([a-f0-9]{3})$/i;\n\nColor.prototype.hex3 = function(value) {\n var match = null;\n if ((match = value.match(_hex3)) !== null) {\n this.r = parseInt(match[1][0] + match[1][0], 16);\n this.g = parseInt(match[1][1] + match[1][1], 16);\n this.b = parseInt(match[1][2] + match[1][2], 16);\n }\n return match !== null;\n};\n\nvar _hex6 = /^#([a-f0-9]{6})$/i;\n\nColor.prototype.hex6 = function(value) {\n var match = null;\n if ((match = value.match(_hex6)) !== null) {\n this.r = parseInt(match[1].substring(0, 2), 16);\n this.g = parseInt(match[1].substring(2, 4), 16);\n this.b = parseInt(match[1].substring(4, 6), 16);\n }\n return match !== null;\n};\n\n\nvar _rgb = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/;\n\nColor.prototype.rgb = function(value) {\n var match = null;\n if ((match = value.match(_rgb)) !== null) {\n this.r = Number(match[1]);\n this.g = Number(match[2]);\n this.b = Number(match[3]);\n }\n return match !== null;\n};\n\nvar _rgba = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?\\.?\\d+)\\s*\\)$/;\n\nColor.prototype.rgba = function(value) {\n var match = null;\n if ((match = value.match(_rgba)) !== null) {\n this.r = Number(match[1]);\n this.g = Number(match[2]);\n this.b = Number(match[3]);\n this.a = Number(match[4]);\n }\n return match !== null;\n};\n\nColor.prototype.toString = function() {\n return this.a !== null && this.a !== 1 ?\n \"rgba(\" + [this.r, this.g, this.b, this.a].join(\",\") + \")\" :\n \"rgb(\" + [this.r, this.g, this.b].join(\",\") + \")\";\n};\n\nColor.prototype.namedColor = function(value) {\n value = value.toLowerCase();\n var color = colors[value];\n if (color) {\n this.r = color[0];\n this.g = color[1];\n this.b = color[2];\n } else if (value === \"transparent\") {\n this.r = this.g = this.b = this.a = 0;\n return true;\n }\n\n return !!color;\n};\n\nColor.prototype.isColor = true;\n\n// JSON.stringify([].slice.call($$('.named-color-table tr'), 1).map(function(row) { return [row.childNodes[3].textContent, row.childNodes[5].textContent.trim().split(\",\").map(Number)] }).reduce(function(data, row) {data[row[0]] = row[1]; return data}, {}))\nvar colors = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n};\n\nmodule.exports = Color;\n\n},{}],4:[function(_dereq_,module,exports){\nvar Support = _dereq_('./support');\nvar CanvasRenderer = _dereq_('./renderers/canvas');\nvar ImageLoader = _dereq_('./imageloader');\nvar NodeParser = _dereq_('./nodeparser');\nvar NodeContainer = _dereq_('./nodecontainer');\nvar log = _dereq_('./log');\nvar utils = _dereq_('./utils');\nvar createWindowClone = _dereq_('./clone');\nvar loadUrlDocument = _dereq_('./proxy').loadUrlDocument;\nvar getBounds = utils.getBounds;\n\nvar html2canvasNodeAttribute = \"data-html2canvas-node\";\nvar html2canvasCloneIndex = 0;\n\nfunction html2canvas(nodeList, options) {\n var index = html2canvasCloneIndex++;\n options = options || {};\n if (options.logging) {\n log.options.logging = true;\n log.options.start = Date.now();\n }\n\n options.async = typeof(options.async) === \"undefined\" ? true : options.async;\n options.allowTaint = typeof(options.allowTaint) === \"undefined\" ? false : options.allowTaint;\n options.removeContainer = typeof(options.removeContainer) === \"undefined\" ? true : options.removeContainer;\n options.javascriptEnabled = typeof(options.javascriptEnabled) === \"undefined\" ? false : options.javascriptEnabled;\n options.imageTimeout = typeof(options.imageTimeout) === \"undefined\" ? 10000 : options.imageTimeout;\n options.renderer = typeof(options.renderer) === \"function\" ? options.renderer : CanvasRenderer;\n options.strict = !!options.strict;\n\n if (typeof(nodeList) === \"string\") {\n if (typeof(options.proxy) !== \"string\") {\n return Promise.reject(\"Proxy must be used when rendering url\");\n }\n var width = options.width != null ? options.width : window.innerWidth;\n var height = options.height != null ? options.height : window.innerHeight;\n return loadUrlDocument(absoluteUrl(nodeList), options.proxy, document, width, height, options).then(function(container) {\n return renderWindow(container.contentWindow.document.documentElement, container, options, width, height);\n });\n }\n\n var node = ((nodeList === undefined) ? [document.documentElement] : ((nodeList.length) ? nodeList : [nodeList]))[0];\n node.setAttribute(html2canvasNodeAttribute + index, index);\n return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth, node.ownerDocument.defaultView.innerHeight, index).then(function(canvas) {\n if (typeof(options.onrendered) === \"function\") {\n log(\"options.onrendered is deprecated, html2canvas returns a Promise containing the canvas\");\n options.onrendered(canvas);\n }\n return canvas;\n });\n}\n\nhtml2canvas.CanvasRenderer = CanvasRenderer;\nhtml2canvas.NodeContainer = NodeContainer;\nhtml2canvas.log = log;\nhtml2canvas.utils = utils;\n\nvar html2canvasExport = (typeof(document) === \"undefined\" || typeof(Object.create) !== \"function\" || typeof(document.createElement(\"canvas\").getContext) !== \"function\") ? function() {\n return Promise.reject(\"No canvas support\");\n} : html2canvas;\n\nmodule.exports = html2canvasExport;\n\nif (typeof(define) === 'function' && define.amd) {\n define('html2canvas', [], function() {\n return html2canvasExport;\n });\n}\n\nfunction renderDocument(document, options, windowWidth, windowHeight, html2canvasIndex) {\n return createWindowClone(document, document, windowWidth, windowHeight, options, document.defaultView.pageXOffset, document.defaultView.pageYOffset).then(function(container) {\n log(\"Document cloned\");\n var attributeName = html2canvasNodeAttribute + html2canvasIndex;\n var selector = \"[\" + attributeName + \"='\" + html2canvasIndex + \"']\";\n document.querySelector(selector).removeAttribute(attributeName);\n var clonedWindow = container.contentWindow;\n var node = clonedWindow.document.querySelector(selector);\n var oncloneHandler = (typeof(options.onclone) === \"function\") ? Promise.resolve(options.onclone(clonedWindow.document)) : Promise.resolve(true);\n return oncloneHandler.then(function() {\n return renderWindow(node, container, options, windowWidth, windowHeight);\n });\n });\n}\n\nfunction renderWindow(node, container, options, windowWidth, windowHeight) {\n var clonedWindow = container.contentWindow;\n var support = new Support(clonedWindow.document);\n var imageLoader = new ImageLoader(options, support);\n var bounds = getBounds(node);\n var width = options.type === \"view\" ? windowWidth : documentWidth(clonedWindow.document);\n var height = options.type === \"view\" ? windowHeight : documentHeight(clonedWindow.document);\n var renderer = new options.renderer(width, height, imageLoader, options, document);\n var parser = new NodeParser(node, renderer, support, imageLoader, options);\n return parser.ready.then(function() {\n log(\"Finished rendering\");\n var canvas;\n\n if (options.type === \"view\") {\n canvas = crop(renderer.canvas, {width: renderer.canvas.width, height: renderer.canvas.height, top: 0, left: 0, x: 0, y: 0});\n } else if (node === clonedWindow.document.body || node === clonedWindow.document.documentElement || options.canvas != null) {\n canvas = renderer.canvas;\n } else {\n canvas = crop(renderer.canvas, {width: options.width != null ? options.width : bounds.width, height: options.height != null ? options.height : bounds.height, top: bounds.top, left: bounds.left, x: 0, y: 0});\n }\n\n cleanupContainer(container, options);\n return canvas;\n });\n}\n\nfunction cleanupContainer(container, options) {\n if (options.removeContainer) {\n container.parentNode.removeChild(container);\n log(\"Cleaned up container\");\n }\n}\n\nfunction crop(canvas, bounds) {\n var croppedCanvas = document.createElement(\"canvas\");\n var x1 = Math.min(canvas.width - 1, Math.max(0, bounds.left));\n var x2 = Math.min(canvas.width, Math.max(1, bounds.left + bounds.width));\n var y1 = Math.min(canvas.height - 1, Math.max(0, bounds.top));\n var y2 = Math.min(canvas.height, Math.max(1, bounds.top + bounds.height));\n croppedCanvas.width = bounds.width;\n croppedCanvas.height = bounds.height;\n var width = x2-x1;\n var height = y2-y1;\n log(\"Cropping canvas at:\", \"left:\", bounds.left, \"top:\", bounds.top, \"width:\", width, \"height:\", height);\n log(\"Resulting crop with width\", bounds.width, \"and height\", bounds.height, \"with x\", x1, \"and y\", y1);\n croppedCanvas.getContext(\"2d\").drawImage(canvas, x1, y1, width, height, bounds.x, bounds.y, width, height);\n return croppedCanvas;\n}\n\nfunction documentWidth (doc) {\n return Math.max(\n Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth),\n Math.max(doc.body.offsetWidth, doc.documentElement.offsetWidth),\n Math.max(doc.body.clientWidth, doc.documentElement.clientWidth)\n );\n}\n\nfunction documentHeight (doc) {\n return Math.max(\n Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight),\n Math.max(doc.body.offsetHeight, doc.documentElement.offsetHeight),\n Math.max(doc.body.clientHeight, doc.documentElement.clientHeight)\n );\n}\n\nfunction absoluteUrl(url) {\n var link = document.createElement(\"a\");\n link.href = url;\n link.href = link.href;\n return link;\n}\n\n},{\"./clone\":2,\"./imageloader\":11,\"./log\":13,\"./nodecontainer\":14,\"./nodeparser\":15,\"./proxy\":16,\"./renderers/canvas\":20,\"./support\":22,\"./utils\":26}],5:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar smallImage = _dereq_('./utils').smallImage;\n\nfunction DummyImageContainer(src) {\n this.src = src;\n log(\"DummyImageContainer for\", src);\n if (!this.promise || !this.image) {\n log(\"Initiating DummyImageContainer\");\n DummyImageContainer.prototype.image = new Image();\n var image = this.image;\n DummyImageContainer.prototype.promise = new Promise(function(resolve, reject) {\n image.onload = resolve;\n image.onerror = reject;\n image.src = smallImage();\n if (image.complete === true) {\n resolve(image);\n }\n });\n }\n}\n\nmodule.exports = DummyImageContainer;\n\n},{\"./log\":13,\"./utils\":26}],6:[function(_dereq_,module,exports){\nvar smallImage = _dereq_('./utils').smallImage;\n\nfunction Font(family, size) {\n var container = document.createElement('div'),\n img = document.createElement('img'),\n span = document.createElement('span'),\n sampleText = 'Hidden Text',\n baseline,\n middle;\n\n container.style.visibility = \"hidden\";\n container.style.fontFamily = family;\n container.style.fontSize = size;\n container.style.margin = 0;\n container.style.padding = 0;\n\n document.body.appendChild(container);\n\n img.src = smallImage();\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 = family;\n span.style.fontSize = size;\n span.style.margin = 0;\n span.style.padding = 0;\n\n span.appendChild(document.createTextNode(sampleText));\n container.appendChild(span);\n container.appendChild(img);\n baseline = (img.offsetTop - span.offsetTop) + 1;\n\n container.removeChild(span);\n container.appendChild(document.createTextNode(sampleText));\n\n container.style.lineHeight = \"normal\";\n img.style.verticalAlign = \"super\";\n\n middle = (img.offsetTop-container.offsetTop) + 1;\n\n document.body.removeChild(container);\n\n this.baseline = baseline;\n this.lineWidth = 1;\n this.middle = middle;\n}\n\nmodule.exports = Font;\n\n},{\"./utils\":26}],7:[function(_dereq_,module,exports){\nvar Font = _dereq_('./font');\n\nfunction FontMetrics() {\n this.data = {};\n}\n\nFontMetrics.prototype.getMetrics = function(family, size) {\n if (this.data[family + \"-\" + size] === undefined) {\n this.data[family + \"-\" + size] = new Font(family, size);\n }\n return this.data[family + \"-\" + size];\n};\n\nmodule.exports = FontMetrics;\n\n},{\"./font\":6}],8:[function(_dereq_,module,exports){\nvar utils = _dereq_('./utils');\nvar getBounds = utils.getBounds;\nvar loadUrlDocument = _dereq_('./proxy').loadUrlDocument;\n\nfunction FrameContainer(container, sameOrigin, options) {\n this.image = null;\n this.src = container;\n var self = this;\n var bounds = getBounds(container);\n this.promise = (!sameOrigin ? this.proxyLoad(options.proxy, bounds, options) : new Promise(function(resolve) {\n if (container.contentWindow.document.URL === \"about:blank\" || container.contentWindow.document.documentElement == null) {\n container.contentWindow.onload = container.onload = function() {\n resolve(container);\n };\n } else {\n resolve(container);\n }\n })).then(function(container) {\n var html2canvas = _dereq_('./core');\n return html2canvas(container.contentWindow.document.documentElement, {type: 'view', width: container.width, height: container.height, proxy: options.proxy, javascriptEnabled: options.javascriptEnabled, removeContainer: options.removeContainer, allowTaint: options.allowTaint, imageTimeout: options.imageTimeout / 2});\n }).then(function(canvas) {\n return self.image = canvas;\n });\n}\n\nFrameContainer.prototype.proxyLoad = function(proxy, bounds, options) {\n var container = this.src;\n return loadUrlDocument(container.src, proxy, container.ownerDocument, bounds.width, bounds.height, options);\n};\n\nmodule.exports = FrameContainer;\n\n},{\"./core\":4,\"./proxy\":16,\"./utils\":26}],9:[function(_dereq_,module,exports){\nfunction GradientContainer(imageData) {\n this.src = imageData.value;\n this.colorStops = [];\n this.type = null;\n this.x0 = 0.5;\n this.y0 = 0.5;\n this.x1 = 0.5;\n this.y1 = 0.5;\n this.promise = Promise.resolve(true);\n}\n\nGradientContainer.TYPES = {\n LINEAR: 1,\n RADIAL: 2\n};\n\n// TODO: support hsl[a], negative %/length values\n// TODO: support <angle> (e.g. -?\\d{1,3}(?:\\.\\d+)deg, etc. : https://developer.mozilla.org/docs/Web/CSS/angle )\nGradientContainer.REGEXP_COLORSTOP = /^\\s*(rgba?\\(\\s*\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}(?:,\\s*[0-9\\.]+)?\\s*\\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\\s+(\\d{1,3}(?:\\.\\d+)?)(%|px)?)?(?:\\s|$)/i;\n\nmodule.exports = GradientContainer;\n\n},{}],10:[function(_dereq_,module,exports){\nfunction ImageContainer(src, cors) {\n this.src = src;\n this.image = new Image();\n var self = this;\n this.tainted = null;\n this.promise = new Promise(function(resolve, reject) {\n self.image.onload = resolve;\n self.image.onerror = reject;\n if (cors) {\n self.image.crossOrigin = \"anonymous\";\n }\n self.image.src = src;\n if (self.image.complete === true) {\n resolve(self.image);\n }\n });\n}\n\nmodule.exports = ImageContainer;\n\n},{}],11:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar ImageContainer = _dereq_('./imagecontainer');\nvar DummyImageContainer = _dereq_('./dummyimagecontainer');\nvar ProxyImageContainer = _dereq_('./proxyimagecontainer');\nvar FrameContainer = _dereq_('./framecontainer');\nvar SVGContainer = _dereq_('./svgcontainer');\nvar SVGNodeContainer = _dereq_('./svgnodecontainer');\nvar LinearGradientContainer = _dereq_('./lineargradientcontainer');\nvar WebkitGradientContainer = _dereq_('./webkitgradientcontainer');\nvar bind = _dereq_('./utils').bind;\n\nfunction ImageLoader(options, support) {\n this.link = null;\n this.options = options;\n this.support = support;\n this.origin = this.getOrigin(window.location.href);\n}\n\nImageLoader.prototype.findImages = function(nodes) {\n var images = [];\n nodes.reduce(function(imageNodes, container) {\n switch(container.node.nodeName) {\n case \"IMG\":\n return imageNodes.concat([{\n args: [container.node.src],\n method: \"url\"\n }]);\n case \"svg\":\n case \"IFRAME\":\n return imageNodes.concat([{\n args: [container.node],\n method: container.node.nodeName\n }]);\n }\n return imageNodes;\n }, []).forEach(this.addImage(images, this.loadImage), this);\n return images;\n};\n\nImageLoader.prototype.findBackgroundImage = function(images, container) {\n container.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(images, this.loadImage), this);\n return images;\n};\n\nImageLoader.prototype.addImage = function(images, callback) {\n return function(newImage) {\n newImage.args.forEach(function(image) {\n if (!this.imageExists(images, image)) {\n images.splice(0, 0, callback.call(this, newImage));\n log('Added image #' + (images.length), typeof(image) === \"string\" ? image.substring(0, 100) : image);\n }\n }, this);\n };\n};\n\nImageLoader.prototype.hasImageBackground = function(imageData) {\n return imageData.method !== \"none\";\n};\n\nImageLoader.prototype.loadImage = function(imageData) {\n if (imageData.method === \"url\") {\n var src = imageData.args[0];\n if (this.isSVG(src) && !this.support.svg && !this.options.allowTaint) {\n return new SVGContainer(src);\n } else if (src.match(/data:image\\/.*;base64,/i)) {\n return new ImageContainer(src.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/ig, ''), false);\n } else if (this.isSameOrigin(src) || this.options.allowTaint === true || this.isSVG(src)) {\n return new ImageContainer(src, false);\n } else if (this.support.cors && !this.options.allowTaint && this.options.useCORS) {\n return new ImageContainer(src, true);\n } else if (this.options.proxy) {\n return new ProxyImageContainer(src, this.options.proxy);\n } else {\n return new DummyImageContainer(src);\n }\n } else if (imageData.method === \"linear-gradient\") {\n return new LinearGradientContainer(imageData);\n } else if (imageData.method === \"gradient\") {\n return new WebkitGradientContainer(imageData);\n } else if (imageData.method === \"svg\") {\n return new SVGNodeContainer(imageData.args[0], this.support.svg);\n } else if (imageData.method === \"IFRAME\") {\n return new FrameContainer(imageData.args[0], this.isSameOrigin(imageData.args[0].src), this.options);\n } else {\n return new DummyImageContainer(imageData);\n }\n};\n\nImageLoader.prototype.isSVG = function(src) {\n return src.substring(src.length - 3).toLowerCase() === \"svg\" || SVGContainer.prototype.isInline(src);\n};\n\nImageLoader.prototype.imageExists = function(images, src) {\n return images.some(function(image) {\n return image.src === src;\n });\n};\n\nImageLoader.prototype.isSameOrigin = function(url) {\n return (this.getOrigin(url) === this.origin);\n};\n\nImageLoader.prototype.getOrigin = function(url) {\n var link = this.link || (this.link = document.createElement(\"a\"));\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\nImageLoader.prototype.getPromise = function(container) {\n return this.timeout(container, this.options.imageTimeout)['catch'](function() {\n var dummy = new DummyImageContainer(container.src);\n return dummy.promise.then(function(image) {\n container.image = image;\n });\n });\n};\n\nImageLoader.prototype.get = function(src) {\n var found = null;\n return this.images.some(function(img) {\n return (found = img).src === src;\n }) ? found : null;\n};\n\nImageLoader.prototype.fetch = function(nodes) {\n this.images = nodes.reduce(bind(this.findBackgroundImage, this), this.findImages(nodes));\n this.images.forEach(function(image, index) {\n image.promise.then(function() {\n log(\"Succesfully loaded image #\"+ (index+1), image);\n }, function(e) {\n log(\"Failed loading image #\"+ (index+1), image, e);\n });\n });\n this.ready = Promise.all(this.images.map(this.getPromise, this));\n log(\"Finished searching images\");\n return this;\n};\n\nImageLoader.prototype.timeout = function(container, timeout) {\n var timer;\n var promise = Promise.race([container.promise, new Promise(function(res, reject) {\n timer = setTimeout(function() {\n log(\"Timed out loading image\", container);\n reject(container);\n }, timeout);\n })]).then(function(container) {\n clearTimeout(timer);\n return container;\n });\n promise['catch'](function() {\n clearTimeout(timer);\n });\n return promise;\n};\n\nmodule.exports = ImageLoader;\n\n},{\"./dummyimagecontainer\":5,\"./framecontainer\":8,\"./imagecontainer\":10,\"./lineargradientcontainer\":12,\"./log\":13,\"./proxyimagecontainer\":17,\"./svgcontainer\":23,\"./svgnodecontainer\":24,\"./utils\":26,\"./webkitgradientcontainer\":27}],12:[function(_dereq_,module,exports){\nvar GradientContainer = _dereq_('./gradientcontainer');\nvar Color = _dereq_('./color');\n\nfunction LinearGradientContainer(imageData) {\n GradientContainer.apply(this, arguments);\n this.type = GradientContainer.TYPES.LINEAR;\n\n var hasDirection = LinearGradientContainer.REGEXP_DIRECTION.test( imageData.args[0] ) ||\n !GradientContainer.REGEXP_COLORSTOP.test( imageData.args[0] );\n\n if (hasDirection) {\n imageData.args[0].split(/\\s+/).reverse().forEach(function(position, index) {\n switch(position) {\n case \"left\":\n this.x0 = 0;\n this.x1 = 1;\n break;\n case \"top\":\n this.y0 = 0;\n this.y1 = 1;\n break;\n case \"right\":\n this.x0 = 1;\n this.x1 = 0;\n break;\n case \"bottom\":\n this.y0 = 1;\n this.y1 = 0;\n break;\n case \"to\":\n var y0 = this.y0;\n var x0 = this.x0;\n this.y0 = this.y1;\n this.x0 = this.x1;\n this.x1 = x0;\n this.y1 = y0;\n break;\n case \"center\":\n break; // centered by default\n // Firefox internally converts position keywords to percentages:\n // http://www.w3.org/TR/2010/WD-CSS2-20101207/colors.html#propdef-background-position\n default: // percentage or absolute length\n // TODO: support absolute start point positions (e.g., use bounds to convert px to a ratio)\n var ratio = parseFloat(position, 10) * 1e-2;\n if (isNaN(ratio)) { // invalid or unhandled value\n break;\n }\n if (index === 0) {\n this.y0 = ratio;\n this.y1 = 1 - this.y0;\n } else {\n this.x0 = ratio;\n this.x1 = 1 - this.x0;\n }\n break;\n }\n }, this);\n } else {\n this.y0 = 0;\n this.y1 = 1;\n }\n\n this.colorStops = imageData.args.slice(hasDirection ? 1 : 0).map(function(colorStop) {\n var colorStopMatch = colorStop.match(GradientContainer.REGEXP_COLORSTOP);\n var value = +colorStopMatch[2];\n var unit = value === 0 ? \"%\" : colorStopMatch[3]; // treat \"0\" as \"0%\"\n return {\n color: new Color(colorStopMatch[1]),\n // TODO: support absolute stop positions (e.g., compute gradient line length & convert px to ratio)\n stop: unit === \"%\" ? value / 100 : null\n };\n });\n\n if (this.colorStops[0].stop === null) {\n this.colorStops[0].stop = 0;\n }\n\n if (this.colorStops[this.colorStops.length - 1].stop === null) {\n this.colorStops[this.colorStops.length - 1].stop = 1;\n }\n\n // calculates and fills-in explicit stop positions when omitted from rule\n this.colorStops.forEach(function(colorStop, index) {\n if (colorStop.stop === null) {\n this.colorStops.slice(index).some(function(find, count) {\n if (find.stop !== null) {\n colorStop.stop = ((find.stop - this.colorStops[index - 1].stop) / (count + 1)) + this.colorStops[index - 1].stop;\n return true;\n } else {\n return false;\n }\n }, this);\n }\n }, this);\n}\n\nLinearGradientContainer.prototype = Object.create(GradientContainer.prototype);\n\n// TODO: support <angle> (e.g. -?\\d{1,3}(?:\\.\\d+)deg, etc. : https://developer.mozilla.org/docs/Web/CSS/angle )\nLinearGradientContainer.REGEXP_DIRECTION = /^\\s*(?:to|left|right|top|bottom|center|\\d{1,3}(?:\\.\\d+)?%?)(?:\\s|$)/i;\n\nmodule.exports = LinearGradientContainer;\n\n},{\"./color\":3,\"./gradientcontainer\":9}],13:[function(_dereq_,module,exports){\nvar logger = function() {\n if (logger.options.logging && window.console && window.console.log) {\n Function.prototype.bind.call(window.console.log, (window.console)).apply(window.console, [(Date.now() - logger.options.start) + \"ms\", \"html2canvas:\"].concat([].slice.call(arguments, 0)));\n }\n};\n\nlogger.options = {logging: false};\nmodule.exports = logger;\n\n},{}],14:[function(_dereq_,module,exports){\nvar Color = _dereq_('./color');\nvar utils = _dereq_('./utils');\nvar getBounds = utils.getBounds;\nvar parseBackgrounds = utils.parseBackgrounds;\nvar offsetBounds = utils.offsetBounds;\n\nfunction NodeContainer(node, parent) {\n this.node = node;\n this.parent = parent;\n this.stack = null;\n this.bounds = null;\n this.borders = null;\n this.clip = [];\n this.backgroundClip = [];\n this.offsetBounds = null;\n this.visible = null;\n this.computedStyles = null;\n this.colors = {};\n this.styles = {};\n this.backgroundImages = null;\n this.transformData = null;\n this.transformMatrix = null;\n this.isPseudoElement = false;\n this.opacity = null;\n}\n\nNodeContainer.prototype.cloneTo = function(stack) {\n stack.visible = this.visible;\n stack.borders = this.borders;\n stack.bounds = this.bounds;\n stack.clip = this.clip;\n stack.backgroundClip = this.backgroundClip;\n stack.computedStyles = this.computedStyles;\n stack.styles = this.styles;\n stack.backgroundImages = this.backgroundImages;\n stack.opacity = this.opacity;\n};\n\nNodeContainer.prototype.getOpacity = function() {\n return this.opacity === null ? (this.opacity = this.cssFloat('opacity')) : this.opacity;\n};\n\nNodeContainer.prototype.assignStack = function(stack) {\n this.stack = stack;\n stack.children.push(this);\n};\n\nNodeContainer.prototype.isElementVisible = function() {\n return this.node.nodeType === Node.TEXT_NODE ? this.parent.visible : (\n this.css('display') !== \"none\" &&\n this.css('visibility') !== \"hidden\" &&\n !this.node.hasAttribute(\"data-html2canvas-ignore\") &&\n (this.node.nodeName !== \"INPUT\" || this.node.getAttribute(\"type\") !== \"hidden\")\n );\n};\n\nNodeContainer.prototype.css = function(attribute) {\n if (!this.computedStyles) {\n this.computedStyles = this.isPseudoElement ? this.parent.computedStyle(this.before ? \":before\" : \":after\") : this.computedStyle(null);\n }\n\n return this.styles[attribute] || (this.styles[attribute] = this.computedStyles[attribute]);\n};\n\nNodeContainer.prototype.prefixedCss = function(attribute) {\n var prefixes = [\"webkit\", \"moz\", \"ms\", \"o\"];\n var value = this.css(attribute);\n if (value === undefined) {\n prefixes.some(function(prefix) {\n value = this.css(prefix + attribute.substr(0, 1).toUpperCase() + attribute.substr(1));\n return value !== undefined;\n }, this);\n }\n return value === undefined ? null : value;\n};\n\nNodeContainer.prototype.computedStyle = function(type) {\n return this.node.ownerDocument.defaultView.getComputedStyle(this.node, type);\n};\n\nNodeContainer.prototype.cssInt = function(attribute) {\n var value = parseInt(this.css(attribute), 10);\n return (isNaN(value)) ? 0 : value; // borders in old IE are throwing 'medium' for demo.html\n};\n\nNodeContainer.prototype.color = function(attribute) {\n return this.colors[attribute] || (this.colors[attribute] = new Color(this.css(attribute)));\n};\n\nNodeContainer.prototype.cssFloat = function(attribute) {\n var value = parseFloat(this.css(attribute));\n return (isNaN(value)) ? 0 : value;\n};\n\nNodeContainer.prototype.fontWeight = function() {\n var weight = this.css(\"fontWeight\");\n switch(parseInt(weight, 10)){\n case 401:\n weight = \"bold\";\n break;\n case 400:\n weight = \"normal\";\n break;\n }\n return weight;\n};\n\nNodeContainer.prototype.parseClip = function() {\n var matches = this.css('clip').match(this.CLIP);\n if (matches) {\n return {\n top: parseInt(matches[1], 10),\n right: parseInt(matches[2], 10),\n bottom: parseInt(matches[3], 10),\n left: parseInt(matches[4], 10)\n };\n }\n return null;\n};\n\nNodeContainer.prototype.parseBackgroundImages = function() {\n return this.backgroundImages || (this.backgroundImages = parseBackgrounds(this.css(\"backgroundImage\")));\n};\n\nNodeContainer.prototype.cssList = function(property, index) {\n var value = (this.css(property) || '').split(',');\n value = value[index || 0] || value[0] || 'auto';\n value = value.trim().split(' ');\n if (value.length === 1) {\n value = [value[0], isPercentage(value[0]) ? 'auto' : value[0]];\n }\n return value;\n};\n\nNodeContainer.prototype.parseBackgroundSize = function(bounds, image, index) {\n var size = this.cssList(\"backgroundSize\", index);\n var width, height;\n\n if (isPercentage(size[0])) {\n width = bounds.width * parseFloat(size[0]) / 100;\n } else if (/contain|cover/.test(size[0])) {\n var targetRatio = bounds.width / bounds.height, currentRatio = image.width / image.height;\n return (targetRatio < currentRatio ^ size[0] === 'contain') ? {width: bounds.height * currentRatio, height: bounds.height} : {width: bounds.width, height: bounds.width / currentRatio};\n } else {\n width = parseInt(size[0], 10);\n }\n\n if (size[0] === 'auto' && size[1] === 'auto') {\n height = image.height;\n } else if (size[1] === 'auto') {\n height = width / image.width * image.height;\n } else if (isPercentage(size[1])) {\n height = bounds.height * parseFloat(size[1]) / 100;\n } else {\n height = parseInt(size[1], 10);\n }\n\n if (size[0] === 'auto') {\n width = height / image.height * image.width;\n }\n\n return {width: width, height: height};\n};\n\nNodeContainer.prototype.parseBackgroundPosition = function(bounds, image, index, backgroundSize) {\n var position = this.cssList('backgroundPosition', index);\n var left, top;\n\n if (isPercentage(position[0])){\n left = (bounds.width - (backgroundSize || image).width) * (parseFloat(position[0]) / 100);\n } else {\n left = parseInt(position[0], 10);\n }\n\n if (position[1] === 'auto') {\n top = left / image.width * image.height;\n } else if (isPercentage(position[1])){\n top = (bounds.height - (backgroundSize || image).height) * parseFloat(position[1]) / 100;\n } else {\n top = parseInt(position[1], 10);\n }\n\n if (position[0] === 'auto') {\n left = top / image.height * image.width;\n }\n\n return {left: left, top: top};\n};\n\nNodeContainer.prototype.parseBackgroundRepeat = function(index) {\n return this.cssList(\"backgroundRepeat\", index)[0];\n};\n\nNodeContainer.prototype.parseTextShadows = function() {\n var textShadow = this.css(\"textShadow\");\n var results = [];\n\n if (textShadow && textShadow !== 'none') {\n var shadows = textShadow.match(this.TEXT_SHADOW_PROPERTY);\n for (var i = 0; shadows && (i < shadows.length); i++) {\n var s = shadows[i].match(this.TEXT_SHADOW_VALUES);\n results.push({\n color: new Color(s[0]),\n offsetX: s[1] ? parseFloat(s[1].replace('px', '')) : 0,\n offsetY: s[2] ? parseFloat(s[2].replace('px', '')) : 0,\n blur: s[3] ? s[3].replace('px', '') : 0\n });\n }\n }\n return results;\n};\n\nNodeContainer.prototype.parseTransform = function() {\n if (!this.transformData) {\n if (this.hasTransform()) {\n var offset = this.parseBounds();\n var origin = this.prefixedCss(\"transformOrigin\").split(\" \").map(removePx).map(asFloat);\n origin[0] += offset.left;\n origin[1] += offset.top;\n this.transformData = {\n origin: origin,\n matrix: this.parseTransformMatrix()\n };\n } else {\n this.transformData = {\n origin: [0, 0],\n matrix: [1, 0, 0, 1, 0, 0]\n };\n }\n }\n return this.transformData;\n};\n\nNodeContainer.prototype.parseTransformMatrix = function() {\n if (!this.transformMatrix) {\n var transform = this.prefixedCss(\"transform\");\n var matrix = transform ? parseMatrix(transform.match(this.MATRIX_PROPERTY)) : null;\n this.transformMatrix = matrix ? matrix : [1, 0, 0, 1, 0, 0];\n }\n return this.transformMatrix;\n};\n\nNodeContainer.prototype.parseBounds = function() {\n return this.bounds || (this.bounds = this.hasTransform() ? offsetBounds(this.node) : getBounds(this.node));\n};\n\nNodeContainer.prototype.hasTransform = function() {\n return this.parseTransformMatrix().join(\",\") !== \"1,0,0,1,0,0\" || (this.parent && this.parent.hasTransform());\n};\n\nNodeContainer.prototype.getValue = function() {\n var value = this.node.value || \"\";\n if (this.node.tagName === \"SELECT\") {\n value = selectionValue(this.node);\n } else if (this.node.type === \"password\") {\n value = Array(value.length + 1).join('\\u2022'); // jshint ignore:line\n }\n return value.length === 0 ? (this.node.placeholder || \"\") : value;\n};\n\nNodeContainer.prototype.MATRIX_PROPERTY = /(matrix|matrix3d)\\((.+)\\)/;\nNodeContainer.prototype.TEXT_SHADOW_PROPERTY = /((rgba|rgb)\\([^\\)]+\\)(\\s-?\\d+px){0,})/g;\nNodeContainer.prototype.TEXT_SHADOW_VALUES = /(-?\\d+px)|(#.+)|(rgb\\(.+\\))|(rgba\\(.+\\))/g;\nNodeContainer.prototype.CLIP = /^rect\\((\\d+)px,? (\\d+)px,? (\\d+)px,? (\\d+)px\\)$/;\n\nfunction selectionValue(node) {\n var option = node.options[node.selectedIndex || 0];\n return option ? (option.text || \"\") : \"\";\n}\n\nfunction parseMatrix(match) {\n if (match && match[1] === \"matrix\") {\n return match[2].split(\",\").map(function(s) {\n return parseFloat(s.trim());\n });\n } else if (match && match[1] === \"matrix3d\") {\n var matrix3d = match[2].split(\",\").map(function(s) {\n return parseFloat(s.trim());\n });\n return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]];\n }\n}\n\nfunction isPercentage(value) {\n return value.toString().indexOf(\"%\") !== -1;\n}\n\nfunction removePx(str) {\n return str.replace(\"px\", \"\");\n}\n\nfunction asFloat(str) {\n return parseFloat(str);\n}\n\nmodule.exports = NodeContainer;\n\n},{\"./color\":3,\"./utils\":26}],15:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\nvar punycode = _dereq_('punycode');\nvar NodeContainer = _dereq_('./nodecontainer');\nvar TextContainer = _dereq_('./textcontainer');\nvar PseudoElementContainer = _dereq_('./pseudoelementcontainer');\nvar FontMetrics = _dereq_('./fontmetrics');\nvar Color = _dereq_('./color');\nvar StackingContext = _dereq_('./stackingcontext');\nvar utils = _dereq_('./utils');\nvar bind = utils.bind;\nvar getBounds = utils.getBounds;\nvar parseBackgrounds = utils.parseBackgrounds;\nvar offsetBounds = utils.offsetBounds;\n\nfunction NodeParser(element, renderer, support, imageLoader, options) {\n log(\"Starting NodeParser\");\n this.renderer = renderer;\n this.options = options;\n this.range = null;\n this.support = support;\n this.renderQueue = [];\n this.stack = new StackingContext(true, 1, element.ownerDocument, null);\n var parent = new NodeContainer(element, null);\n if (options.background) {\n renderer.rectangle(0, 0, renderer.width, renderer.height, new Color(options.background));\n }\n if (element === element.ownerDocument.documentElement) {\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var canvasBackground = new NodeContainer(parent.color('backgroundColor').isTransparent() ? element.ownerDocument.body : element.ownerDocument.documentElement, null);\n renderer.rectangle(0, 0, renderer.width, renderer.height, canvasBackground.color('backgroundColor'));\n }\n parent.visibile = parent.isElementVisible();\n this.createPseudoHideStyles(element.ownerDocument);\n this.disableAnimations(element.ownerDocument);\n this.nodes = flatten([parent].concat(this.getChildren(parent)).filter(function(container) {\n return container.visible = container.isElementVisible();\n }).map(this.getPseudoElements, this));\n this.fontMetrics = new FontMetrics();\n log(\"Fetched nodes, total:\", this.nodes.length);\n log(\"Calculate overflow clips\");\n this.calculateOverflowClips();\n log(\"Start fetching images\");\n this.images = imageLoader.fetch(this.nodes.filter(isElement));\n this.ready = this.images.ready.then(bind(function() {\n log(\"Images loaded, starting parsing\");\n log(\"Creating stacking contexts\");\n this.createStackingContexts();\n log(\"Sorting stacking contexts\");\n this.sortStackingContexts(this.stack);\n this.parse(this.stack);\n log(\"Render queue created with \" + this.renderQueue.length + \" items\");\n return new Promise(bind(function(resolve) {\n if (!options.async) {\n this.renderQueue.forEach(this.paint, this);\n resolve();\n } else if (typeof(options.async) === \"function\") {\n options.async.call(this, this.renderQueue, resolve);\n } else if (this.renderQueue.length > 0){\n this.renderIndex = 0;\n this.asyncRenderer(this.renderQueue, resolve);\n } else {\n resolve();\n }\n }, this));\n }, this));\n}\n\nNodeParser.prototype.calculateOverflowClips = function() {\n this.nodes.forEach(function(container) {\n if (isElement(container)) {\n if (isPseudoElement(container)) {\n container.appendToDOM();\n }\n container.borders = this.parseBorders(container);\n var clip = (container.css('overflow') === \"hidden\") ? [container.borders.clip] : [];\n var cssClip = container.parseClip();\n if (cssClip && [\"absolute\", \"fixed\"].indexOf(container.css('position')) !== -1) {\n clip.push([[\"rect\",\n container.bounds.left + cssClip.left,\n container.bounds.top + cssClip.top,\n cssClip.right - cssClip.left,\n cssClip.bottom - cssClip.top\n ]]);\n }\n container.clip = hasParentClip(container) ? container.parent.clip.concat(clip) : clip;\n container.backgroundClip = (container.css('overflow') !== \"hidden\") ? container.clip.concat([container.borders.clip]) : container.clip;\n if (isPseudoElement(container)) {\n container.cleanDOM();\n }\n } else if (isTextNode(container)) {\n container.clip = hasParentClip(container) ? container.parent.clip : [];\n }\n if (!isPseudoElement(container)) {\n container.bounds = null;\n }\n }, this);\n};\n\nfunction hasParentClip(container) {\n return container.parent && container.parent.clip.length;\n}\n\nNodeParser.prototype.asyncRenderer = function(queue, resolve, asyncTimer) {\n asyncTimer = asyncTimer || Date.now();\n this.paint(queue[this.renderIndex++]);\n if (queue.length === this.renderIndex) {\n resolve();\n } else if (asyncTimer + 20 > Date.now()) {\n this.asyncRenderer(queue, resolve, asyncTimer);\n } else {\n setTimeout(bind(function() {\n this.asyncRenderer(queue, resolve);\n }, this), 0);\n }\n};\n\nNodeParser.prototype.createPseudoHideStyles = function(document) {\n this.createStyles(document, '.' + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ':before { content: \"\" !important; display: none !important; }' +\n '.' + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER + ':after { content: \"\" !important; display: none !important; }');\n};\n\nNodeParser.prototype.disableAnimations = function(document) {\n this.createStyles(document, '* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; ' +\n '-webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}');\n};\n\nNodeParser.prototype.createStyles = function(document, styles) {\n var hidePseudoElements = document.createElement('style');\n hidePseudoElements.innerHTML = styles;\n document.body.appendChild(hidePseudoElements);\n};\n\nNodeParser.prototype.getPseudoElements = function(container) {\n var nodes = [[container]];\n if (container.node.nodeType === Node.ELEMENT_NODE) {\n var before = this.getPseudoElement(container, \":before\");\n var after = this.getPseudoElement(container, \":after\");\n\n if (before) {\n nodes.push(before);\n }\n\n if (after) {\n nodes.push(after);\n }\n }\n return flatten(nodes);\n};\n\nfunction toCamelCase(str) {\n return str.replace(/(\\-[a-z])/g, function(match){\n return match.toUpperCase().replace('-','');\n });\n}\n\nNodeParser.prototype.getPseudoElement = function(container, type) {\n var style = container.computedStyle(type);\n if(!style || !style.content || style.content === \"none\" || style.content === \"-moz-alt-content\" || style.display === \"none\") {\n return null;\n }\n\n var content = stripQuotes(style.content);\n var isImage = content.substr(0, 3) === 'url';\n var pseudoNode = document.createElement(isImage ? 'img' : 'html2canvaspseudoelement');\n var pseudoContainer = new PseudoElementContainer(pseudoNode, container, type);\n\n for (var i = style.length-1; i >= 0; i--) {\n var property = toCamelCase(style.item(i));\n pseudoNode.style[property] = style[property];\n }\n\n pseudoNode.className = PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n\n if (isImage) {\n pseudoNode.src = parseBackgrounds(content)[0].args[0];\n return [pseudoContainer];\n } else {\n var text = document.createTextNode(content);\n pseudoNode.appendChild(text);\n return [pseudoContainer, new TextContainer(text, pseudoContainer)];\n }\n};\n\n\nNodeParser.prototype.getChildren = function(parentContainer) {\n return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {\n var container = [node.nodeType === Node.TEXT_NODE ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);\n return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== \"TEXTAREA\" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;\n }, this));\n};\n\nNodeParser.prototype.newStackingContext = function(container, hasOwnStacking) {\n var stack = new StackingContext(hasOwnStacking, container.getOpacity(), container.node, container.parent);\n container.cloneTo(stack);\n var parentStack = hasOwnStacking ? stack.getParentStack(this) : stack.parent.stack;\n parentStack.contexts.push(stack);\n container.stack = stack;\n};\n\nNodeParser.prototype.createStackingContexts = function() {\n this.nodes.forEach(function(container) {\n if (isElement(container) && (this.isRootElement(container) || hasOpacity(container) || isPositionedForStacking(container) || this.isBodyWithTransparentRoot(container) || container.hasTransform())) {\n this.newStackingContext(container, true);\n } else if (isElement(container) && ((isPositioned(container) && zIndex0(container)) || isInlineBlock(container) || isFloating(container))) {\n this.newStackingContext(container, false);\n } else {\n container.assignStack(container.parent.stack);\n }\n }, this);\n};\n\nNodeParser.prototype.isBodyWithTransparentRoot = function(container) {\n return container.node.nodeName === \"BODY\" && container.parent.color('backgroundColor').isTransparent();\n};\n\nNodeParser.prototype.isRootElement = function(container) {\n return container.parent === null;\n};\n\nNodeParser.prototype.sortStackingContexts = function(stack) {\n stack.contexts.sort(zIndexSort(stack.contexts.slice(0)));\n stack.contexts.forEach(this.sortStackingContexts, this);\n};\n\nNodeParser.prototype.parseTextBounds = function(container) {\n return function(text, index, textList) {\n if (container.parent.css(\"textDecoration\").substr(0, 4) !== \"none\" || text.trim().length !== 0) {\n if (this.support.rangeBounds && !container.parent.hasTransform()) {\n var offset = textList.slice(0, index).join(\"\").length;\n return this.getRangeBounds(container.node, offset, text.length);\n } else if (container.node && typeof(container.node.data) === \"string\") {\n var replacementNode = container.node.splitText(text.length);\n var bounds = this.getWrapperBounds(container.node, container.parent.hasTransform());\n container.node = replacementNode;\n return bounds;\n }\n } else if(!this.support.rangeBounds || container.parent.hasTransform()){\n container.node = container.node.splitText(text.length);\n }\n return {};\n };\n};\n\nNodeParser.prototype.getWrapperBounds = function(node, transform) {\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\n var parent = node.parentNode,\n backupText = node.cloneNode(true);\n\n wrapper.appendChild(node.cloneNode(true));\n parent.replaceChild(wrapper, node);\n var bounds = transform ? offsetBounds(wrapper) : getBounds(wrapper);\n parent.replaceChild(backupText, wrapper);\n return bounds;\n};\n\nNodeParser.prototype.getRangeBounds = function(node, offset, length) {\n var range = this.range || (this.range = node.ownerDocument.createRange());\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range.getBoundingClientRect();\n};\n\nfunction ClearTransform() {}\n\nNodeParser.prototype.parse = function(stack) {\n // http://www.w3.org/TR/CSS21/visuren.html#z-index\n var negativeZindex = stack.contexts.filter(negativeZIndex); // 2. the child stacking contexts with negative stack levels (most negative first).\n var descendantElements = stack.children.filter(isElement);\n var descendantNonFloats = descendantElements.filter(not(isFloating));\n var nonInlineNonPositionedDescendants = descendantNonFloats.filter(not(isPositioned)).filter(not(inlineLevel)); // 3 the in-flow, non-inline-level, non-positioned descendants.\n var nonPositionedFloats = descendantElements.filter(not(isPositioned)).filter(isFloating); // 4. the non-positioned floats.\n var inFlow = descendantNonFloats.filter(not(isPositioned)).filter(inlineLevel); // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n var stackLevel0 = stack.contexts.concat(descendantNonFloats.filter(isPositioned)).filter(zIndex0); // 6. the child stacking contexts with stack level 0 and the positioned descendants with stack level 0.\n var text = stack.children.filter(isTextNode).filter(hasText);\n var positiveZindex = stack.contexts.filter(positiveZIndex); // 7. the child stacking contexts with positive stack levels (least positive first).\n negativeZindex.concat(nonInlineNonPositionedDescendants).concat(nonPositionedFloats)\n .concat(inFlow).concat(stackLevel0).concat(text).concat(positiveZindex).forEach(function(container) {\n this.renderQueue.push(container);\n if (isStackingContext(container)) {\n this.parse(container);\n this.renderQueue.push(new ClearTransform());\n }\n }, this);\n};\n\nNodeParser.prototype.paint = function(container) {\n try {\n if (container instanceof ClearTransform) {\n this.renderer.ctx.restore();\n } else if (isTextNode(container)) {\n if (isPseudoElement(container.parent)) {\n container.parent.appendToDOM();\n }\n this.paintText(container);\n if (isPseudoElement(container.parent)) {\n container.parent.cleanDOM();\n }\n } else {\n this.paintNode(container);\n }\n } catch(e) {\n log(e);\n if (this.options.strict) {\n throw e;\n }\n }\n};\n\nNodeParser.prototype.paintNode = function(container) {\n if (isStackingContext(container)) {\n this.renderer.setOpacity(container.opacity);\n this.renderer.ctx.save();\n if (container.hasTransform()) {\n this.renderer.setTransform(container.parseTransform());\n }\n }\n\n if (container.node.nodeName === \"INPUT\" && container.node.type === \"checkbox\") {\n this.paintCheckbox(container);\n } else if (container.node.nodeName === \"INPUT\" && container.node.type === \"radio\") {\n this.paintRadio(container);\n } else {\n this.paintElement(container);\n }\n};\n\nNodeParser.prototype.paintElement = function(container) {\n var bounds = container.parseBounds();\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.renderBackground(container, bounds, container.borders.borders.map(getWidth));\n }, this);\n\n this.renderer.clip(container.clip, function() {\n this.renderer.renderBorders(container.borders.borders);\n }, this);\n\n this.renderer.clip(container.backgroundClip, function() {\n switch (container.node.nodeName) {\n case \"svg\":\n case \"IFRAME\":\n var imgContainer = this.images.get(container.node);\n if (imgContainer) {\n this.renderer.renderImage(container, bounds, container.borders, imgContainer);\n } else {\n log(\"Error loading <\" + container.node.nodeName + \">\", container.node);\n }\n break;\n case \"IMG\":\n var imageContainer = this.images.get(container.node.src);\n if (imageContainer) {\n this.renderer.renderImage(container, bounds, container.borders, imageContainer);\n } else {\n log(\"Error loading <img>\", container.node.src);\n }\n break;\n case \"CANVAS\":\n this.renderer.renderImage(container, bounds, container.borders, {image: container.node});\n break;\n case \"SELECT\":\n case \"INPUT\":\n case \"TEXTAREA\":\n this.paintFormValue(container);\n break;\n }\n }, this);\n};\n\nNodeParser.prototype.paintCheckbox = function(container) {\n var b = container.parseBounds();\n\n var size = Math.min(b.width, b.height);\n var bounds = {width: size - 1, height: size - 1, top: b.top, left: b.left};\n var r = [3, 3];\n var radius = [r, r, r, r];\n var borders = [1,1,1,1].map(function(w) {\n return {color: new Color('#A5A5A5'), width: w};\n });\n\n var borderPoints = calculateCurvePoints(bounds, radius, borders);\n\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.rectangle(bounds.left + 1, bounds.top + 1, bounds.width - 2, bounds.height - 2, new Color(\"#DEDEDE\"));\n this.renderer.renderBorders(calculateBorders(borders, bounds, borderPoints, radius));\n if (container.node.checked) {\n this.renderer.font(new Color('#424242'), 'normal', 'normal', 'bold', (size - 3) + \"px\", 'arial');\n this.renderer.text(\"\\u2714\", bounds.left + size / 6, bounds.top + size - 1);\n }\n }, this);\n};\n\nNodeParser.prototype.paintRadio = function(container) {\n var bounds = container.parseBounds();\n\n var size = Math.min(bounds.width, bounds.height) - 2;\n\n this.renderer.clip(container.backgroundClip, function() {\n this.renderer.circleStroke(bounds.left + 1, bounds.top + 1, size, new Color('#DEDEDE'), 1, new Color('#A5A5A5'));\n if (container.node.checked) {\n this.renderer.circle(Math.ceil(bounds.left + size / 4) + 1, Math.ceil(bounds.top + size / 4) + 1, Math.floor(size / 2), new Color('#424242'));\n }\n }, this);\n};\n\nNodeParser.prototype.paintFormValue = function(container) {\n var value = container.getValue();\n if (value.length > 0) {\n var document = container.node.ownerDocument;\n var wrapper = document.createElement('html2canvaswrapper');\n var properties = ['lineHeight', 'textAlign', 'fontFamily', 'fontWeight', 'fontSize', 'color',\n 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom',\n 'width', 'height', 'borderLeftStyle', 'borderTopStyle', 'borderLeftWidth', 'borderTopWidth',\n 'boxSizing', 'whiteSpace', 'wordWrap'];\n\n properties.forEach(function(property) {\n try {\n wrapper.style[property] = container.css(property);\n } catch(e) {\n // Older IE has issues with \"border\"\n log(\"html2canvas: Parse: Exception caught in renderFormValue: \" + e.message);\n }\n });\n var bounds = container.parseBounds();\n wrapper.style.position = \"fixed\";\n wrapper.style.left = bounds.left + \"px\";\n wrapper.style.top = bounds.top + \"px\";\n wrapper.textContent = value;\n document.body.appendChild(wrapper);\n this.paintText(new TextContainer(wrapper.firstChild, container));\n document.body.removeChild(wrapper);\n }\n};\n\nNodeParser.prototype.paintText = function(container) {\n container.applyTextTransform();\n var characters = punycode.ucs2.decode(container.node.data);\n var textList = (!this.options.letterRendering || noLetterSpacing(container)) && !hasUnicode(container.node.data) ? getWords(characters) : characters.map(function(character) {\n return punycode.ucs2.encode([character]);\n });\n\n var weight = container.parent.fontWeight();\n var size = container.parent.css('fontSize');\n var family = container.parent.css('fontFamily');\n var shadows = container.parent.parseTextShadows();\n\n this.renderer.font(container.parent.color('color'), container.parent.css('fontStyle'), container.parent.css('fontVariant'), weight, size, family);\n if (shadows.length) {\n // TODO: support multiple text shadows\n this.renderer.fontShadow(shadows[0].color, shadows[0].offsetX, shadows[0].offsetY, shadows[0].blur);\n } else {\n this.renderer.clearShadow();\n }\n\n this.renderer.clip(container.parent.clip, function() {\n textList.map(this.parseTextBounds(container), this).forEach(function(bounds, index) {\n if (bounds) {\n this.renderer.text(textList[index], bounds.left, bounds.bottom);\n this.renderTextDecoration(container.parent, bounds, this.fontMetrics.getMetrics(family, size));\n }\n }, this);\n }, this);\n};\n\nNodeParser.prototype.renderTextDecoration = function(container, bounds, metrics) {\n switch(container.css(\"textDecoration\").split(\" \")[0]) {\n case \"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, need to take that into account both in position and size\n this.renderer.rectangle(bounds.left, Math.round(bounds.top + metrics.baseline + metrics.lineWidth), bounds.width, 1, container.color(\"color\"));\n break;\n case \"overline\":\n this.renderer.rectangle(bounds.left, Math.round(bounds.top), bounds.width, 1, container.color(\"color\"));\n break;\n case \"line-through\":\n // TODO try and find exact position for line-through\n this.renderer.rectangle(bounds.left, Math.ceil(bounds.top + metrics.middle + metrics.lineWidth), bounds.width, 1, container.color(\"color\"));\n break;\n }\n};\n\nvar borderColorTransforms = {\n inset: [\n [\"darken\", 0.60],\n [\"darken\", 0.10],\n [\"darken\", 0.10],\n [\"darken\", 0.60]\n ]\n};\n\nNodeParser.prototype.parseBorders = function(container) {\n var nodeBounds = container.parseBounds();\n var radius = getBorderRadiusData(container);\n var borders = [\"Top\", \"Right\", \"Bottom\", \"Left\"].map(function(side, index) {\n var style = container.css('border' + side + 'Style');\n var color = container.color('border' + side + 'Color');\n if (style === \"inset\" && color.isBlack()) {\n color = new Color([255, 255, 255, color.a]); // this is wrong, but\n }\n var colorTransform = borderColorTransforms[style] ? borderColorTransforms[style][index] : null;\n return {\n width: container.cssInt('border' + side + 'Width'),\n color: colorTransform ? color[colorTransform[0]](colorTransform[1]) : color,\n args: null\n };\n });\n var borderPoints = calculateCurvePoints(nodeBounds, radius, borders);\n\n return {\n clip: this.parseBackgroundClip(container, borderPoints, borders, radius, nodeBounds),\n borders: calculateBorders(borders, nodeBounds, borderPoints, radius)\n };\n};\n\nfunction calculateBorders(borders, nodeBounds, borderPoints, radius) {\n return borders.map(function(border, borderSide) {\n if (border.width > 0) {\n var bx = nodeBounds.left;\n var by = nodeBounds.top;\n var bw = nodeBounds.width;\n var bh = nodeBounds.height - (borders[2].width);\n\n switch(borderSide) {\n case 0:\n // top border\n bh = borders[0].width;\n border.args = drawSide({\n c1: [bx, by],\n c2: [bx + bw, by],\n c3: [bx + bw - borders[1].width, by + bh],\n c4: [bx + borders[3].width, by + bh]\n }, radius[0], radius[1],\n borderPoints.topLeftOuter, borderPoints.topLeftInner, borderPoints.topRightOuter, borderPoints.topRightInner);\n break;\n case 1:\n // right border\n bx = nodeBounds.left + nodeBounds.width - (borders[1].width);\n bw = borders[1].width;\n\n border.args = drawSide({\n c1: [bx + bw, by],\n c2: [bx + bw, by + bh + borders[2].width],\n c3: [bx, by + bh],\n c4: [bx, by + borders[0].width]\n }, radius[1], radius[2],\n borderPoints.topRightOuter, borderPoints.topRightInner, borderPoints.bottomRightOuter, borderPoints.bottomRightInner);\n break;\n case 2:\n // bottom border\n by = (by + nodeBounds.height) - (borders[2].width);\n bh = borders[2].width;\n border.args = drawSide({\n c1: [bx + bw, by + bh],\n c2: [bx, by + bh],\n c3: [bx + borders[3].width, by],\n c4: [bx + bw - borders[3].width, by]\n }, radius[2], radius[3],\n borderPoints.bottomRightOuter, borderPoints.bottomRightInner, borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner);\n break;\n case 3:\n // left border\n bw = borders[3].width;\n border.args = drawSide({\n c1: [bx, by + bh + borders[2].width],\n c2: [bx, by],\n c3: [bx + bw, by + borders[0].width],\n c4: [bx + bw, by + bh]\n }, radius[3], radius[0],\n borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner, borderPoints.topLeftOuter, borderPoints.topLeftInner);\n break;\n }\n }\n return border;\n });\n}\n\nNodeParser.prototype.parseBackgroundClip = function(container, borderPoints, borders, radius, bounds) {\n var backgroundClip = container.css('backgroundClip'),\n borderArgs = [];\n\n switch(backgroundClip) {\n case \"content-box\":\n case \"padding-box\":\n parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftInner, borderPoints.topRightInner, bounds.left + borders[3].width, bounds.top + borders[0].width);\n parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightInner, borderPoints.bottomRightInner, bounds.left + bounds.width - borders[1].width, bounds.top + borders[0].width);\n parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightInner, borderPoints.bottomLeftInner, bounds.left + bounds.width - borders[1].width, bounds.top + bounds.height - borders[2].width);\n parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftInner, borderPoints.topLeftInner, bounds.left + borders[3].width, bounds.top + bounds.height - borders[2].width);\n break;\n\n default:\n parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftOuter, borderPoints.topRightOuter, bounds.left, bounds.top);\n parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightOuter, borderPoints.bottomRightOuter, bounds.left + bounds.width, bounds.top);\n parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightOuter, borderPoints.bottomLeftOuter, bounds.left + bounds.width, bounds.top + bounds.height);\n parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftOuter, borderPoints.topLeftOuter, bounds.left, bounds.top + bounds.height);\n break;\n }\n\n return borderArgs;\n};\n\nfunction getCurvePoints(x, y, r1, r2) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = (r1) * kappa, // control point offset horizontal\n oy = (r2) * kappa, // control point offset vertical\n xm = x + r1, // x-middle\n ym = y + r2; // y-middle\n return {\n topLeft: bezierCurve({x: x, y: ym}, {x: x, y: ym - oy}, {x: xm - ox, y: y}, {x: xm, y: y}),\n topRight: bezierCurve({x: x, y: y}, {x: x + ox,y: y}, {x: xm, y: ym - oy}, {x: xm, y: ym}),\n bottomRight: bezierCurve({x: xm, y: y}, {x: xm, y: y + oy}, {x: x + ox, y: ym}, {x: x, y: ym}),\n bottomLeft: bezierCurve({x: xm, y: ym}, {x: xm - ox, y: ym}, {x: x, y: y + oy}, {x: x, y:y})\n };\n}\n\nfunction calculateCurvePoints(bounds, borderRadius, borders) {\n var x = bounds.left,\n y = bounds.top,\n width = bounds.width,\n height = bounds.height,\n\n tlh = borderRadius[0][0] < width / 2 ? borderRadius[0][0] : width / 2,\n tlv = borderRadius[0][1] < height / 2 ? borderRadius[0][1] : height / 2,\n trh = borderRadius[1][0] < width / 2 ? borderRadius[1][0] : width / 2,\n trv = borderRadius[1][1] < height / 2 ? borderRadius[1][1] : height / 2,\n brh = borderRadius[2][0] < width / 2 ? borderRadius[2][0] : width / 2,\n brv = borderRadius[2][1] < height / 2 ? borderRadius[2][1] : height / 2,\n blh = borderRadius[3][0] < width / 2 ? borderRadius[3][0] : width / 2,\n blv = borderRadius[3][1] < height / 2 ? borderRadius[3][1] : height / 2;\n\n var topWidth = width - trh,\n rightHeight = height - brv,\n bottomWidth = width - brh,\n leftHeight = height - blv;\n\n return {\n topLeftOuter: getCurvePoints(x, y, tlh, tlv).topLeft.subdivide(0.5),\n topLeftInner: getCurvePoints(x + borders[3].width, y + borders[0].width, Math.max(0, tlh - borders[3].width), Math.max(0, tlv - borders[0].width)).topLeft.subdivide(0.5),\n topRightOuter: getCurvePoints(x + topWidth, y, trh, trv).topRight.subdivide(0.5),\n topRightInner: getCurvePoints(x + Math.min(topWidth, width + borders[3].width), y + borders[0].width, (topWidth > width + borders[3].width) ? 0 :trh - borders[3].width, trv - borders[0].width).topRight.subdivide(0.5),\n bottomRightOuter: getCurvePoints(x + bottomWidth, y + rightHeight, brh, brv).bottomRight.subdivide(0.5),\n bottomRightInner: getCurvePoints(x + Math.min(bottomWidth, width - borders[3].width), y + Math.min(rightHeight, height + borders[0].width), Math.max(0, brh - borders[1].width), brv - borders[2].width).bottomRight.subdivide(0.5),\n bottomLeftOuter: getCurvePoints(x, y + leftHeight, blh, blv).bottomLeft.subdivide(0.5),\n bottomLeftInner: getCurvePoints(x + borders[3].width, y + leftHeight, Math.max(0, blh - borders[3].width), blv - borders[2].width).bottomLeft.subdivide(0.5)\n };\n}\n\nfunction bezierCurve(start, startControl, endControl, end) {\n var lerp = function (a, b, t) {\n return {\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t\n };\n };\n\n return {\n start: start,\n startControl: startControl,\n endControl: endControl,\n end: end,\n subdivide: function(t) {\n var ab = lerp(start, startControl, t),\n bc = lerp(startControl, endControl, t),\n cd = lerp(endControl, end, t),\n abbc = lerp(ab, bc, t),\n bccd = lerp(bc, cd, t),\n dest = lerp(abbc, bccd, t);\n return [bezierCurve(start, ab, abbc, dest), bezierCurve(dest, bccd, cd, end)];\n },\n curveTo: function(borderArgs) {\n borderArgs.push([\"bezierCurve\", startControl.x, startControl.y, endControl.x, endControl.y, end.x, end.y]);\n },\n curveToReversed: function(borderArgs) {\n borderArgs.push([\"bezierCurve\", endControl.x, endControl.y, startControl.x, startControl.y, start.x, start.y]);\n }\n };\n}\n\nfunction drawSide(borderData, radius1, radius2, outer1, inner1, outer2, inner2) {\n var borderArgs = [];\n\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", outer1[1].start.x, outer1[1].start.y]);\n outer1[1].curveTo(borderArgs);\n } else {\n borderArgs.push([ \"line\", borderData.c1[0], borderData.c1[1]]);\n }\n\n if (radius2[0] > 0 || radius2[1] > 0) {\n borderArgs.push([\"line\", outer2[0].start.x, outer2[0].start.y]);\n outer2[0].curveTo(borderArgs);\n borderArgs.push([\"line\", inner2[0].end.x, inner2[0].end.y]);\n inner2[0].curveToReversed(borderArgs);\n } else {\n borderArgs.push([\"line\", borderData.c2[0], borderData.c2[1]]);\n borderArgs.push([\"line\", borderData.c3[0], borderData.c3[1]]);\n }\n\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", inner1[1].end.x, inner1[1].end.y]);\n inner1[1].curveToReversed(borderArgs);\n } else {\n borderArgs.push([\"line\", borderData.c4[0], borderData.c4[1]]);\n }\n\n return borderArgs;\n}\n\nfunction parseCorner(borderArgs, radius1, radius2, corner1, corner2, x, y) {\n if (radius1[0] > 0 || radius1[1] > 0) {\n borderArgs.push([\"line\", corner1[0].start.x, corner1[0].start.y]);\n corner1[0].curveTo(borderArgs);\n corner1[1].curveTo(borderArgs);\n } else {\n borderArgs.push([\"line\", x, y]);\n }\n\n if (radius2[0] > 0 || radius2[1] > 0) {\n borderArgs.push([\"line\", corner2[0].start.x, corner2[0].start.y]);\n }\n}\n\nfunction negativeZIndex(container) {\n return container.cssInt(\"zIndex\") < 0;\n}\n\nfunction positiveZIndex(container) {\n return container.cssInt(\"zIndex\") > 0;\n}\n\nfunction zIndex0(container) {\n return container.cssInt(\"zIndex\") === 0;\n}\n\nfunction inlineLevel(container) {\n return [\"inline\", \"inline-block\", \"inline-table\"].indexOf(container.css(\"display\")) !== -1;\n}\n\nfunction isStackingContext(container) {\n return (container instanceof StackingContext);\n}\n\nfunction hasText(container) {\n return container.node.data.trim().length > 0;\n}\n\nfunction noLetterSpacing(container) {\n return (/^(normal|none|0px)$/.test(container.parent.css(\"letterSpacing\")));\n}\n\nfunction getBorderRadiusData(container) {\n return [\"TopLeft\", \"TopRight\", \"BottomRight\", \"BottomLeft\"].map(function(side) {\n var value = container.css('border' + side + 'Radius');\n var arr = value.split(\" \");\n if (arr.length <= 1) {\n arr[1] = arr[0];\n }\n return arr.map(asInt);\n });\n}\n\nfunction renderableNode(node) {\n return (node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE);\n}\n\nfunction isPositionedForStacking(container) {\n var position = container.css(\"position\");\n var zIndex = ([\"absolute\", \"relative\", \"fixed\"].indexOf(position) !== -1) ? container.css(\"zIndex\") : \"auto\";\n return zIndex !== \"auto\";\n}\n\nfunction isPositioned(container) {\n return container.css(\"position\") !== \"static\";\n}\n\nfunction isFloating(container) {\n return container.css(\"float\") !== \"none\";\n}\n\nfunction isInlineBlock(container) {\n return [\"inline-block\", \"inline-table\"].indexOf(container.css(\"display\")) !== -1;\n}\n\nfunction not(callback) {\n var context = this;\n return function() {\n return !callback.apply(context, arguments);\n };\n}\n\nfunction isElement(container) {\n return container.node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction isPseudoElement(container) {\n return container.isPseudoElement === true;\n}\n\nfunction isTextNode(container) {\n return container.node.nodeType === Node.TEXT_NODE;\n}\n\nfunction zIndexSort(contexts) {\n return function(a, b) {\n return (a.cssInt(\"zIndex\") + (contexts.indexOf(a) / contexts.length)) - (b.cssInt(\"zIndex\") + (contexts.indexOf(b) / contexts.length));\n };\n}\n\nfunction hasOpacity(container) {\n return container.getOpacity() < 1;\n}\n\nfunction asInt(value) {\n return parseInt(value, 10);\n}\n\nfunction getWidth(border) {\n return border.width;\n}\n\nfunction nonIgnoredElement(nodeContainer) {\n return (nodeContainer.node.nodeType !== Node.ELEMENT_NODE || [\"SCRIPT\", \"HEAD\", \"TITLE\", \"OBJECT\", \"BR\", \"OPTION\"].indexOf(nodeContainer.node.nodeName) === -1);\n}\n\nfunction flatten(arrays) {\n return [].concat.apply([], arrays);\n}\n\nfunction stripQuotes(content) {\n var first = content.substr(0, 1);\n return (first === content.substr(content.length - 1) && first.match(/'|\"/)) ? content.substr(1, content.length - 2) : content;\n}\n\nfunction getWords(characters) {\n var words = [], i = 0, onWordBoundary = false, word;\n while(characters.length) {\n if (isWordBoundary(characters[i]) === onWordBoundary) {\n word = characters.splice(0, i);\n if (word.length) {\n words.push(punycode.ucs2.encode(word));\n }\n onWordBoundary =! onWordBoundary;\n i = 0;\n } else {\n i++;\n }\n\n if (i >= characters.length) {\n word = characters.splice(0, i);\n if (word.length) {\n words.push(punycode.ucs2.encode(word));\n }\n }\n }\n return words;\n}\n\nfunction isWordBoundary(characterCode) {\n return [\n 32, // <space>\n 13, // \\r\n 10, // \\n\n 9, // \\t\n 45 // -\n ].indexOf(characterCode) !== -1;\n}\n\nfunction hasUnicode(string) {\n return (/[^\\u0000-\\u00ff]/).test(string);\n}\n\nmodule.exports = NodeParser;\n\n},{\"./color\":3,\"./fontmetrics\":7,\"./log\":13,\"./nodecontainer\":14,\"./pseudoelementcontainer\":18,\"./stackingcontext\":21,\"./textcontainer\":25,\"./utils\":26,\"punycode\":1}],16:[function(_dereq_,module,exports){\nvar XHR = _dereq_('./xhr');\nvar utils = _dereq_('./utils');\nvar log = _dereq_('./log');\nvar createWindowClone = _dereq_('./clone');\nvar decode64 = utils.decode64;\n\nfunction Proxy(src, proxyUrl, document) {\n var supportsCORS = ('withCredentials' in new XMLHttpRequest());\n if (!proxyUrl) {\n return Promise.reject(\"No proxy configured\");\n }\n var callback = createCallback(supportsCORS);\n var url = createProxyUrl(proxyUrl, src, callback);\n\n return supportsCORS ? XHR(url) : (jsonp(document, url, callback).then(function(response) {\n return decode64(response.content);\n }));\n}\nvar proxyCount = 0;\n\nfunction ProxyURL(src, proxyUrl, document) {\n var supportsCORSImage = ('crossOrigin' in new Image());\n var callback = createCallback(supportsCORSImage);\n var url = createProxyUrl(proxyUrl, src, callback);\n return (supportsCORSImage ? Promise.resolve(url) : jsonp(document, url, callback).then(function(response) {\n return \"data:\" + response.type + \";base64,\" + response.content;\n }));\n}\n\nfunction jsonp(document, url, callback) {\n return new Promise(function(resolve, reject) {\n var s = document.createElement(\"script\");\n var cleanup = function() {\n delete window.html2canvas.proxy[callback];\n document.body.removeChild(s);\n };\n window.html2canvas.proxy[callback] = function(response) {\n cleanup();\n resolve(response);\n };\n s.src = url;\n s.onerror = function(e) {\n cleanup();\n reject(e);\n };\n document.body.appendChild(s);\n });\n}\n\nfunction createCallback(useCORS) {\n return !useCORS ? \"html2canvas_\" + Date.now() + \"_\" + (++proxyCount) + \"_\" + Math.round(Math.random() * 100000) : \"\";\n}\n\nfunction createProxyUrl(proxyUrl, src, callback) {\n return proxyUrl + \"?url=\" + encodeURIComponent(src) + (callback.length ? \"&callback=html2canvas.proxy.\" + callback : \"\");\n}\n\nfunction documentFromHTML(src) {\n return function(html) {\n var parser = new DOMParser(), doc;\n try {\n doc = parser.parseFromString(html, \"text/html\");\n } catch(e) {\n log(\"DOMParser not supported, falling back to createHTMLDocument\");\n doc = document.implementation.createHTMLDocument(\"\");\n try {\n doc.open();\n doc.write(html);\n doc.close();\n } catch(ee) {\n log(\"createHTMLDocument write not supported, falling back to document.body.innerHTML\");\n doc.body.innerHTML = html; // ie9 doesnt support writing to documentElement\n }\n }\n\n var b = doc.querySelector(\"base\");\n if (!b || !b.href.host) {\n var base = doc.createElement(\"base\");\n base.href = src;\n doc.head.insertBefore(base, doc.head.firstChild);\n }\n\n return doc;\n };\n}\n\nfunction loadUrlDocument(src, proxy, document, width, height, options) {\n return new Proxy(src, proxy, window.document).then(documentFromHTML(src)).then(function(doc) {\n return createWindowClone(doc, document, width, height, options, 0, 0);\n });\n}\n\nexports.Proxy = Proxy;\nexports.ProxyURL = ProxyURL;\nexports.loadUrlDocument = loadUrlDocument;\n\n},{\"./clone\":2,\"./log\":13,\"./utils\":26,\"./xhr\":28}],17:[function(_dereq_,module,exports){\nvar ProxyURL = _dereq_('./proxy').ProxyURL;\n\nfunction ProxyImageContainer(src, proxy) {\n var link = document.createElement(\"a\");\n link.href = src;\n src = link.href;\n this.src = src;\n this.image = new Image();\n var self = this;\n this.promise = new Promise(function(resolve, reject) {\n self.image.crossOrigin = \"Anonymous\";\n self.image.onload = resolve;\n self.image.onerror = reject;\n\n new ProxyURL(src, proxy, document).then(function(url) {\n self.image.src = url;\n })['catch'](reject);\n });\n}\n\nmodule.exports = ProxyImageContainer;\n\n},{\"./proxy\":16}],18:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction PseudoElementContainer(node, parent, type) {\n NodeContainer.call(this, node, parent);\n this.isPseudoElement = true;\n this.before = type === \":before\";\n}\n\nPseudoElementContainer.prototype.cloneTo = function(stack) {\n PseudoElementContainer.prototype.cloneTo.call(this, stack);\n stack.isPseudoElement = true;\n stack.before = this.before;\n};\n\nPseudoElementContainer.prototype = Object.create(NodeContainer.prototype);\n\nPseudoElementContainer.prototype.appendToDOM = function() {\n if (this.before) {\n this.parent.node.insertBefore(this.node, this.parent.node.firstChild);\n } else {\n this.parent.node.appendChild(this.node);\n }\n this.parent.node.className += \" \" + this.getHideClass();\n};\n\nPseudoElementContainer.prototype.cleanDOM = function() {\n this.node.parentNode.removeChild(this.node);\n this.parent.node.className = this.parent.node.className.replace(this.getHideClass(), \"\");\n};\n\nPseudoElementContainer.prototype.getHideClass = function() {\n return this[\"PSEUDO_HIDE_ELEMENT_CLASS_\" + (this.before ? \"BEFORE\" : \"AFTER\")];\n};\n\nPseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = \"___html2canvas___pseudoelement_before\";\nPseudoElementContainer.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER = \"___html2canvas___pseudoelement_after\";\n\nmodule.exports = PseudoElementContainer;\n\n},{\"./nodecontainer\":14}],19:[function(_dereq_,module,exports){\nvar log = _dereq_('./log');\n\nfunction Renderer(width, height, images, options, document) {\n this.width = width;\n this.height = height;\n this.images = images;\n this.options = options;\n this.document = document;\n}\n\nRenderer.prototype.renderImage = function(container, bounds, borderData, imageContainer) {\n var paddingLeft = container.cssInt('paddingLeft'),\n paddingTop = container.cssInt('paddingTop'),\n paddingRight = container.cssInt('paddingRight'),\n paddingBottom = container.cssInt('paddingBottom'),\n borders = borderData.borders;\n\n var width = bounds.width - (borders[1].width + borders[3].width + paddingLeft + paddingRight);\n var height = bounds.height - (borders[0].width + borders[2].width + paddingTop + paddingBottom);\n this.drawImage(\n imageContainer,\n 0,\n 0,\n imageContainer.image.width || width,\n imageContainer.image.height || height,\n bounds.left + paddingLeft + borders[3].width,\n bounds.top + paddingTop + borders[0].width,\n width,\n height\n );\n};\n\nRenderer.prototype.renderBackground = function(container, bounds, borderData) {\n if (bounds.height > 0 && bounds.width > 0) {\n this.renderBackgroundColor(container, bounds);\n this.renderBackgroundImage(container, bounds, borderData);\n }\n};\n\nRenderer.prototype.renderBackgroundColor = function(container, bounds) {\n var color = container.color(\"backgroundColor\");\n if (!color.isTransparent()) {\n this.rectangle(bounds.left, bounds.top, bounds.width, bounds.height, color);\n }\n};\n\nRenderer.prototype.renderBorders = function(borders) {\n borders.forEach(this.renderBorder, this);\n};\n\nRenderer.prototype.renderBorder = function(data) {\n if (!data.color.isTransparent() && data.args !== null) {\n this.drawShape(data.args, data.color);\n }\n};\n\nRenderer.prototype.renderBackgroundImage = function(container, bounds, borderData) {\n var backgroundImages = container.parseBackgroundImages();\n backgroundImages.reverse().forEach(function(backgroundImage, index, arr) {\n switch(backgroundImage.method) {\n case \"url\":\n var image = this.images.get(backgroundImage.args[0]);\n if (image) {\n this.renderBackgroundRepeating(container, bounds, image, arr.length - (index+1), borderData);\n } else {\n log(\"Error loading background-image\", backgroundImage.args[0]);\n }\n break;\n case \"linear-gradient\":\n case \"gradient\":\n var gradientImage = this.images.get(backgroundImage.value);\n if (gradientImage) {\n this.renderBackgroundGradient(gradientImage, bounds, borderData);\n } else {\n log(\"Error loading background-image\", backgroundImage.args[0]);\n }\n break;\n case \"none\":\n break;\n default:\n log(\"Unknown background-image type\", backgroundImage.args[0]);\n }\n }, this);\n};\n\nRenderer.prototype.renderBackgroundRepeating = function(container, bounds, imageContainer, index, borderData) {\n var size = container.parseBackgroundSize(bounds, imageContainer.image, index);\n var position = container.parseBackgroundPosition(bounds, imageContainer.image, index, size);\n var repeat = container.parseBackgroundRepeat(index);\n switch (repeat) {\n case \"repeat-x\":\n case \"repeat no-repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + borderData[3], bounds.top + position.top + borderData[0], 99999, size.height, borderData);\n break;\n case \"repeat-y\":\n case \"no-repeat repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + position.left + borderData[3], bounds.top + borderData[0], size.width, 99999, borderData);\n break;\n case \"no-repeat\":\n this.backgroundRepeatShape(imageContainer, position, size, bounds, bounds.left + position.left + borderData[3], bounds.top + position.top + borderData[0], size.width, size.height, borderData);\n break;\n default:\n this.renderBackgroundRepeat(imageContainer, position, size, {top: bounds.top, left: bounds.left}, borderData[3], borderData[0]);\n break;\n }\n};\n\nmodule.exports = Renderer;\n\n},{\"./log\":13}],20:[function(_dereq_,module,exports){\nvar Renderer = _dereq_('../renderer');\nvar LinearGradientContainer = _dereq_('../lineargradientcontainer');\nvar log = _dereq_('../log');\n\nfunction CanvasRenderer(width, height) {\n Renderer.apply(this, arguments);\n this.canvas = this.options.canvas || this.document.createElement(\"canvas\");\n if (!this.options.canvas) {\n this.canvas.width = width;\n this.canvas.height = height;\n }\n this.ctx = this.canvas.getContext(\"2d\");\n this.taintCtx = this.document.createElement(\"canvas\").getContext(\"2d\");\n this.ctx.textBaseline = \"bottom\";\n this.variables = {};\n log(\"Initialized CanvasRenderer with size\", width, \"x\", height);\n}\n\nCanvasRenderer.prototype = Object.create(Renderer.prototype);\n\nCanvasRenderer.prototype.setFillStyle = function(fillStyle) {\n this.ctx.fillStyle = typeof(fillStyle) === \"object\" && !!fillStyle.isColor ? fillStyle.toString() : fillStyle;\n return this.ctx;\n};\n\nCanvasRenderer.prototype.rectangle = function(left, top, width, height, color) {\n this.setFillStyle(color).fillRect(left, top, width, height);\n};\n\nCanvasRenderer.prototype.circle = function(left, top, size, color) {\n this.setFillStyle(color);\n this.ctx.beginPath();\n this.ctx.arc(left + size / 2, top + size / 2, size / 2, 0, Math.PI*2, true);\n this.ctx.closePath();\n this.ctx.fill();\n};\n\nCanvasRenderer.prototype.circleStroke = function(left, top, size, color, stroke, strokeColor) {\n this.circle(left, top, size, color);\n this.ctx.strokeStyle = strokeColor.toString();\n this.ctx.stroke();\n};\n\nCanvasRenderer.prototype.drawShape = function(shape, color) {\n this.shape(shape);\n this.setFillStyle(color).fill();\n};\n\nCanvasRenderer.prototype.taints = function(imageContainer) {\n if (imageContainer.tainted === null) {\n this.taintCtx.drawImage(imageContainer.image, 0, 0);\n try {\n this.taintCtx.getImageData(0, 0, 1, 1);\n imageContainer.tainted = false;\n } catch(e) {\n this.taintCtx = document.createElement(\"canvas\").getContext(\"2d\");\n imageContainer.tainted = true;\n }\n }\n\n return imageContainer.tainted;\n};\n\nCanvasRenderer.prototype.drawImage = function(imageContainer, sx, sy, sw, sh, dx, dy, dw, dh) {\n if (!this.taints(imageContainer) || this.options.allowTaint) {\n this.ctx.drawImage(imageContainer.image, sx, sy, sw, sh, dx, dy, dw, dh);\n }\n};\n\nCanvasRenderer.prototype.clip = function(shapes, callback, context) {\n this.ctx.save();\n shapes.filter(hasEntries).forEach(function(shape) {\n this.shape(shape).clip();\n }, this);\n callback.call(context);\n this.ctx.restore();\n};\n\nCanvasRenderer.prototype.shape = function(shape) {\n this.ctx.beginPath();\n shape.forEach(function(point, index) {\n if (point[0] === \"rect\") {\n this.ctx.rect.apply(this.ctx, point.slice(1));\n } else {\n this.ctx[(index === 0) ? \"moveTo\" : point[0] + \"To\" ].apply(this.ctx, point.slice(1));\n }\n }, this);\n this.ctx.closePath();\n return this.ctx;\n};\n\nCanvasRenderer.prototype.font = function(color, style, variant, weight, size, family) {\n this.setFillStyle(color).font = [style, variant, weight, size, family].join(\" \").split(\",\")[0];\n};\n\nCanvasRenderer.prototype.fontShadow = function(color, offsetX, offsetY, blur) {\n this.setVariable(\"shadowColor\", color.toString())\n .setVariable(\"shadowOffsetY\", offsetX)\n .setVariable(\"shadowOffsetX\", offsetY)\n .setVariable(\"shadowBlur\", blur);\n};\n\nCanvasRenderer.prototype.clearShadow = function() {\n this.setVariable(\"shadowColor\", \"rgba(0,0,0,0)\");\n};\n\nCanvasRenderer.prototype.setOpacity = function(opacity) {\n this.ctx.globalAlpha = opacity;\n};\n\nCanvasRenderer.prototype.setTransform = function(transform) {\n this.ctx.translate(transform.origin[0], transform.origin[1]);\n this.ctx.transform.apply(this.ctx, transform.matrix);\n this.ctx.translate(-transform.origin[0], -transform.origin[1]);\n};\n\nCanvasRenderer.prototype.setVariable = function(property, value) {\n if (this.variables[property] !== value) {\n this.variables[property] = this.ctx[property] = value;\n }\n\n return this;\n};\n\nCanvasRenderer.prototype.text = function(text, left, bottom) {\n this.ctx.fillText(text, left, bottom);\n};\n\nCanvasRenderer.prototype.backgroundRepeatShape = function(imageContainer, backgroundPosition, size, bounds, left, top, width, height, borderData) {\n var shape = [\n [\"line\", Math.round(left), Math.round(top)],\n [\"line\", Math.round(left + width), Math.round(top)],\n [\"line\", Math.round(left + width), Math.round(height + top)],\n [\"line\", Math.round(left), Math.round(height + top)]\n ];\n this.clip([shape], function() {\n this.renderBackgroundRepeat(imageContainer, backgroundPosition, size, bounds, borderData[3], borderData[0]);\n }, this);\n};\n\nCanvasRenderer.prototype.renderBackgroundRepeat = function(imageContainer, backgroundPosition, size, bounds, borderLeft, borderTop) {\n var offsetX = Math.round(bounds.left + backgroundPosition.left + borderLeft), offsetY = Math.round(bounds.top + backgroundPosition.top + borderTop);\n this.setFillStyle(this.ctx.createPattern(this.resizeImage(imageContainer, size), \"repeat\"));\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n};\n\nCanvasRenderer.prototype.renderBackgroundGradient = function(gradientImage, bounds) {\n if (gradientImage instanceof LinearGradientContainer) {\n var gradient = this.ctx.createLinearGradient(\n bounds.left + bounds.width * gradientImage.x0,\n bounds.top + bounds.height * gradientImage.y0,\n bounds.left + bounds.width * gradientImage.x1,\n bounds.top + bounds.height * gradientImage.y1);\n gradientImage.colorStops.forEach(function(colorStop) {\n gradient.addColorStop(colorStop.stop, colorStop.color.toString());\n });\n this.rectangle(bounds.left, bounds.top, bounds.width, bounds.height, gradient);\n }\n};\n\nCanvasRenderer.prototype.resizeImage = function(imageContainer, size) {\n var image = imageContainer.image;\n if(image.width === size.width && image.height === size.height) {\n return image;\n }\n\n var ctx, canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height );\n return canvas;\n};\n\nfunction hasEntries(array) {\n return array.length > 0;\n}\n\nmodule.exports = CanvasRenderer;\n\n},{\"../lineargradientcontainer\":12,\"../log\":13,\"../renderer\":19}],21:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction StackingContext(hasOwnStacking, opacity, element, parent) {\n NodeContainer.call(this, element, parent);\n this.ownStacking = hasOwnStacking;\n this.contexts = [];\n this.children = [];\n this.opacity = (this.parent ? this.parent.stack.opacity : 1) * opacity;\n}\n\nStackingContext.prototype = Object.create(NodeContainer.prototype);\n\nStackingContext.prototype.getParentStack = function(context) {\n var parentStack = (this.parent) ? this.parent.stack : null;\n return parentStack ? (parentStack.ownStacking ? parentStack : parentStack.getParentStack(context)) : context.stack;\n};\n\nmodule.exports = StackingContext;\n\n},{\"./nodecontainer\":14}],22:[function(_dereq_,module,exports){\nfunction Support(document) {\n this.rangeBounds = this.testRangeBounds(document);\n this.cors = this.testCORS();\n this.svg = this.testSVG();\n}\n\nSupport.prototype.testRangeBounds = function(document) {\n var range, testElement, rangeBounds, rangeHeight, support = false;\n\n if (document.createRange) {\n range = document.createRange();\n if (range.getBoundingClientRect) {\n testElement = document.createElement('boundtest');\n testElement.style.height = \"123px\";\n testElement.style.display = \"block\";\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n rangeBounds = range.getBoundingClientRect();\n rangeHeight = rangeBounds.height;\n\n if (rangeHeight === 123) {\n support = true;\n }\n document.body.removeChild(testElement);\n }\n }\n\n return support;\n};\n\nSupport.prototype.testCORS = function() {\n return typeof((new Image()).crossOrigin) !== \"undefined\";\n};\n\nSupport.prototype.testSVG = function() {\n var img = new Image();\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\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\nmodule.exports = Support;\n\n},{}],23:[function(_dereq_,module,exports){\nvar XHR = _dereq_('./xhr');\nvar decode64 = _dereq_('./utils').decode64;\n\nfunction SVGContainer(src) {\n this.src = src;\n this.image = null;\n var self = this;\n\n this.promise = this.hasFabric().then(function() {\n return (self.isInline(src) ? Promise.resolve(self.inlineFormatting(src)) : XHR(src));\n }).then(function(svg) {\n return new Promise(function(resolve) {\n window.html2canvas.svg.fabric.loadSVGFromString(svg, self.createCanvas.call(self, resolve));\n });\n });\n}\n\nSVGContainer.prototype.hasFabric = function() {\n return !window.html2canvas.svg || !window.html2canvas.svg.fabric ? Promise.reject(new Error(\"html2canvas.svg.js is not loaded, cannot render svg\")) : Promise.resolve();\n};\n\nSVGContainer.prototype.inlineFormatting = function(src) {\n return (/^data:image\\/svg\\+xml;base64,/.test(src)) ? this.decode64(this.removeContentType(src)) : this.removeContentType(src);\n};\n\nSVGContainer.prototype.removeContentType = function(src) {\n return src.replace(/^data:image\\/svg\\+xml(;base64)?,/,'');\n};\n\nSVGContainer.prototype.isInline = function(src) {\n return (/^data:image\\/svg\\+xml/i.test(src));\n};\n\nSVGContainer.prototype.createCanvas = function(resolve) {\n var self = this;\n return function (objects, options) {\n var canvas = new window.html2canvas.svg.fabric.StaticCanvas('c');\n self.image = canvas.lowerCanvasEl;\n canvas\n .setWidth(options.width)\n .setHeight(options.height)\n .add(window.html2canvas.svg.fabric.util.groupSVGElements(objects, options))\n .renderAll();\n resolve(canvas.lowerCanvasEl);\n };\n};\n\nSVGContainer.prototype.decode64 = function(str) {\n return (typeof(window.atob) === \"function\") ? window.atob(str) : decode64(str);\n};\n\nmodule.exports = SVGContainer;\n\n},{\"./utils\":26,\"./xhr\":28}],24:[function(_dereq_,module,exports){\nvar SVGContainer = _dereq_('./svgcontainer');\n\nfunction SVGNodeContainer(node, _native) {\n this.src = node;\n this.image = null;\n var self = this;\n\n this.promise = _native ? new Promise(function(resolve, reject) {\n self.image = new Image();\n self.image.onload = resolve;\n self.image.onerror = reject;\n self.image.src = \"data:image/svg+xml,\" + (new XMLSerializer()).serializeToString(node);\n if (self.image.complete === true) {\n resolve(self.image);\n }\n }) : this.hasFabric().then(function() {\n return new Promise(function(resolve) {\n window.html2canvas.svg.fabric.parseSVGDocument(node, self.createCanvas.call(self, resolve));\n });\n });\n}\n\nSVGNodeContainer.prototype = Object.create(SVGContainer.prototype);\n\nmodule.exports = SVGNodeContainer;\n\n},{\"./svgcontainer\":23}],25:[function(_dereq_,module,exports){\nvar NodeContainer = _dereq_('./nodecontainer');\n\nfunction TextContainer(node, parent) {\n NodeContainer.call(this, node, parent);\n}\n\nTextContainer.prototype = Object.create(NodeContainer.prototype);\n\nTextContainer.prototype.applyTextTransform = function() {\n this.node.data = this.transform(this.parent.css(\"textTransform\"));\n};\n\nTextContainer.prototype.transform = function(transform) {\n var text = this.node.data;\n switch(transform){\n case \"lowercase\":\n return text.toLowerCase();\n case \"capitalize\":\n return text.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g, capitalize);\n case \"uppercase\":\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nfunction capitalize(m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n}\n\nmodule.exports = TextContainer;\n\n},{\"./nodecontainer\":14}],26:[function(_dereq_,module,exports){\nexports.smallImage = function smallImage() {\n return \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n};\n\nexports.bind = function(callback, context) {\n return function() {\n return callback.apply(context, arguments);\n };\n};\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nexports.decode64 = function(base64) {\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var len = base64.length, i, encoded1, encoded2, encoded3, encoded4, byte1, byte2, byte3;\n\n var output = \"\";\n\n for (i = 0; i < len; i+=4) {\n encoded1 = chars.indexOf(base64[i]);\n encoded2 = chars.indexOf(base64[i+1]);\n encoded3 = chars.indexOf(base64[i+2]);\n encoded4 = chars.indexOf(base64[i+3]);\n\n byte1 = (encoded1 << 2) | (encoded2 >> 4);\n byte2 = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n byte3 = ((encoded3 & 3) << 6) | encoded4;\n if (encoded3 === 64) {\n output += String.fromCharCode(byte1);\n } else if (encoded4 === 64 || encoded4 === -1) {\n output += String.fromCharCode(byte1, byte2);\n } else{\n output += String.fromCharCode(byte1, byte2, byte3);\n }\n }\n\n return output;\n};\n\nexports.getBounds = function(node) {\n if (node.getBoundingClientRect) {\n var clientRect = node.getBoundingClientRect();\n var width = node.offsetWidth == null ? clientRect.width : node.offsetWidth;\n return {\n top: clientRect.top,\n bottom: clientRect.bottom || (clientRect.top + clientRect.height),\n right: clientRect.left + width,\n left: clientRect.left,\n width: width,\n height: node.offsetHeight == null ? clientRect.height : node.offsetHeight\n };\n }\n return {};\n};\n\nexports.offsetBounds = function(node) {\n var parent = node.offsetParent ? exports.offsetBounds(node.offsetParent) : {top: 0, left: 0};\n\n return {\n top: node.offsetTop + parent.top,\n bottom: node.offsetTop + node.offsetHeight + parent.top,\n right: node.offsetLeft + parent.left + node.offsetWidth,\n left: node.offsetLeft + parent.left,\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n};\n\nexports.parseBackgrounds = function(backgroundImage) {\n var whitespace = ' \\r\\n\\t',\n method, definition, prefix, prefix_i, block, results = [],\n mode = 0, numParen = 0, quote, args;\n var appendResult = function() {\n if(method) {\n if (definition.substr(0, 1) === '\"') {\n definition = definition.substr(1, definition.length - 2);\n }\n if (definition) {\n args.push(definition);\n }\n if (method.substr(0, 1) === '-' && (prefix_i = method.indexOf('-', 1 ) + 1) > 0) {\n prefix = method.substr(0, prefix_i);\n method = method.substr(prefix_i);\n }\n results.push({\n prefix: prefix,\n method: method.toLowerCase(),\n value: block,\n args: args,\n image: null\n });\n }\n args = [];\n method = prefix = definition = block = '';\n };\n args = [];\n method = prefix = definition = block = '';\n backgroundImage.split(\"\").forEach(function(c) {\n if (mode === 0 && whitespace.indexOf(c) > -1) {\n return;\n }\n switch(c) {\n case '\"':\n if(!quote) {\n quote = c;\n } else if(quote === c) {\n quote = null;\n }\n break;\n case '(':\n if(quote) {\n break;\n } else if(mode === 0) {\n mode = 1;\n block += c;\n return;\n } else {\n numParen++;\n }\n break;\n case ')':\n if (quote) {\n break;\n } else if(mode === 1) {\n if(numParen === 0) {\n mode = 0;\n block += c;\n appendResult();\n return;\n } else {\n numParen--;\n }\n }\n break;\n\n case ',':\n if (quote) {\n break;\n } else if(mode === 0) {\n appendResult();\n return;\n } else if (mode === 1) {\n if (numParen === 0 && !method.match(/^url$/i)) {\n args.push(definition);\n definition = '';\n block += c;\n return;\n }\n }\n break;\n }\n\n block += c;\n if (mode === 0) {\n method += c;\n } else {\n definition += c;\n }\n });\n\n appendResult();\n return results;\n};\n\n},{}],27:[function(_dereq_,module,exports){\nvar GradientContainer = _dereq_('./gradientcontainer');\n\nfunction WebkitGradientContainer(imageData) {\n GradientContainer.apply(this, arguments);\n this.type = imageData.args[0] === \"linear\" ? GradientContainer.TYPES.LINEAR : GradientContainer.TYPES.RADIAL;\n}\n\nWebkitGradientContainer.prototype = Object.create(GradientContainer.prototype);\n\nmodule.exports = WebkitGradientContainer;\n\n},{\"./gradientcontainer\":9}],28:[function(_dereq_,module,exports){\nfunction XHR(url) {\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n resolve(xhr.responseText);\n } else {\n reject(new Error(xhr.statusText));\n }\n };\n\n xhr.onerror = function() {\n reject(new Error(\"Network Error\"));\n };\n\n xhr.send();\n });\n}\n\nmodule.exports = XHR;\n\n},{}]},{},[4])(4)\n});","/*!\n * html2canvas 1.0.0-rc.7 <https://html2canvas.hertzen.com>\n * Copyright (c) 2020 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.html2canvas = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation. All rights reserved.\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n this file except in compliance with the License. You may obtain a copy of the\n License at http://www.apache.org/licenses/LICENSE-2.0\n\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n MERCHANTABLITY OR NON-INFRINGEMENT.\n\n See the Apache Version 2.0 License for specific language governing permissions\n and limitations under the License.\n ***************************************************************************** */\n /* global Reflect, Promise */\n\n var extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n\n function __extends(d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };\n\n function __awaiter(thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n }\n\n var Bounds = /** @class */ (function () {\n function Bounds(x, y, w, h) {\n this.left = x;\n this.top = y;\n this.width = w;\n this.height = h;\n }\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n Bounds.fromClientRect = function (clientRect) {\n return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n };\n return Bounds;\n }());\n var parseBounds = function (node) {\n return Bounds.fromClientRect(node.getBoundingClientRect());\n };\n var parseDocumentSize = function (document) {\n var body = document.body;\n var documentElement = document.documentElement;\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n\n /*\n * css-line-break 1.1.1 <https://github.com/niklasvh/css-line-break#readme>\n * Copyright (c) 2019 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var toCodePoints = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\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.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n var decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\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 bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var 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\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1 = 6 + 5;\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 */\n var UTRIE2_INDEX_SHIFT = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\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 */\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var 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 */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var 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 */\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\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 */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n var slice16 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64 = function (base64) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\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 * 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 Trie.prototype.get = function (codePoint) {\n var 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 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 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 // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n var base64 = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\n\n /* @flow */\n var LETTER_NUMBER_MODIFIER = 50;\n // Non-tailorable Line Breaking Classes\n var BK = 1; // Cause a line break (after)\n var CR = 2; // Cause a line break (after), except between CR and LF\n var LF = 3; // Cause a line break (after)\n var CM = 4; // Prohibit a line break between the character and the preceding character\n var NL = 5; // Cause a line break (after)\n var WJ = 7; // Prohibit line breaks before and after\n var ZW = 8; // Provide a break opportunity\n var GL = 9; // Prohibit line breaks before and after\n var SP = 10; // Enable indirect line breaks\n var ZWJ = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n var B2 = 12; // Provide a line break opportunity before and after the character\n var BA = 13; // Generally provide a line break opportunity after the character\n var BB = 14; // Generally provide a line break opportunity before the character\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n var CL = 17; // Prohibit line breaks before\n var CP = 18; // Prohibit line breaks before\n var EX = 19; // Prohibit line breaks before\n var IN = 20; // Allow only indirect line breaks between pairs\n var NS = 21; // Allow only indirect line breaks before\n var OP = 22; // Prohibit line breaks after\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n var IS = 24; // Prevent breaks after any and before numeric\n var NU = 25; // Form numeric expressions for line breaking purposes\n var PO = 26; // Do not break following a numeric expression\n var PR = 27; // Do not break in front of a numeric expression\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n var EB = 32; // Do not break from following Emoji Modifier\n var EM = 33; // Do not break from preceding Emoji Base\n var H2 = 34; // Form Korean syllable blocks\n var H3 = 35; // Form Korean syllable blocks\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n var ID = 37; // Break before or after; except in some numeric context\n var JL = 38; // Form Korean syllable blocks\n var JV = 39; // Form Korean syllable blocks\n var JT = 40; // Form Korean syllable blocks\n var RI = 41; // Keep pairs together. For pairs; break before and after other classes\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n var UnicodeTrie = createTrieFromBase64(base64);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR, LF, NL];\n var SPACE = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n if (lineBreak === void 0) { lineBreak = 'strict'; }\n var types = [];\n var indicies = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n }\n else {\n categories.push(false);\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 indicies.push(index);\n return types.push(CB);\n }\n }\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indicies.push(index);\n return types.push(AL);\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 var prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indicies.push(indicies[index - 1]);\n return types.push(prev);\n }\n indicies.push(index);\n return types.push(AL);\n }\n indicies.push(index);\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n if (classType === SA) {\n return types.push(AL);\n }\n if (classType === AI) {\n return types.push(AL);\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 }\n else {\n return types.push(AL);\n }\n }\n types.push(classType);\n });\n return [indicies, types, categories];\n };\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (current === SP) {\n var i = currentIndex;\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n };\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\n var i = currentIndex;\n while (i >= 0) {\n var type = classTypes[i];\n if (type === SP) {\n i--;\n }\n else {\n return type;\n }\n }\n return 0;\n };\n var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n var currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex];\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 var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\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 // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\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 // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\n return BREAK_NOT_ALLOWED;\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 // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\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 // 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 // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\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 // 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 // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\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 // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\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 // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\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 // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n return BREAK_NOT_ALLOWED;\n }\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED;\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 return BREAK_NOT_ALLOWED;\n }\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // LB26 Do not break a Korean syllable.\n if ((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 return BREAK_NOT_ALLOWED;\n }\n // LB27 Treat a Korean Syllable Block the same as ID.\n if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n return BREAK_NOT_ALLOWED;\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 // 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 // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n return BREAK_NOT_ALLOWED;\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 var i = indicies[currentIndex];\n var count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n }\n else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\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 return BREAK_ALLOWED;\n };\n var cssFormattedClasses = function (codePoints, options) {\n if (!options) {\n options = { lineBreak: 'normal', wordBreak: 'normal' };\n }\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n }\n var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n var Break = /** @class */ (function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n Break.prototype.slice = function () {\n return fromCodePoint.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n return Break;\n }());\n var LineBreaker = function (str, options) {\n var codePoints = toCodePoints(str);\n var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function () {\n if (nextIndex >= length) {\n return { done: true, value: null };\n }\n var lineBreak = BREAK_NOT_ALLOWED;\n while (nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED) { }\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n\n // https://www.w3.org/TR/css-syntax-3\n var TokenType;\n (function (TokenType) {\n TokenType[TokenType[\"STRING_TOKEN\"] = 0] = \"STRING_TOKEN\";\n TokenType[TokenType[\"BAD_STRING_TOKEN\"] = 1] = \"BAD_STRING_TOKEN\";\n TokenType[TokenType[\"LEFT_PARENTHESIS_TOKEN\"] = 2] = \"LEFT_PARENTHESIS_TOKEN\";\n TokenType[TokenType[\"RIGHT_PARENTHESIS_TOKEN\"] = 3] = \"RIGHT_PARENTHESIS_TOKEN\";\n TokenType[TokenType[\"COMMA_TOKEN\"] = 4] = \"COMMA_TOKEN\";\n TokenType[TokenType[\"HASH_TOKEN\"] = 5] = \"HASH_TOKEN\";\n TokenType[TokenType[\"DELIM_TOKEN\"] = 6] = \"DELIM_TOKEN\";\n TokenType[TokenType[\"AT_KEYWORD_TOKEN\"] = 7] = \"AT_KEYWORD_TOKEN\";\n TokenType[TokenType[\"PREFIX_MATCH_TOKEN\"] = 8] = \"PREFIX_MATCH_TOKEN\";\n TokenType[TokenType[\"DASH_MATCH_TOKEN\"] = 9] = \"DASH_MATCH_TOKEN\";\n TokenType[TokenType[\"INCLUDE_MATCH_TOKEN\"] = 10] = \"INCLUDE_MATCH_TOKEN\";\n TokenType[TokenType[\"LEFT_CURLY_BRACKET_TOKEN\"] = 11] = \"LEFT_CURLY_BRACKET_TOKEN\";\n TokenType[TokenType[\"RIGHT_CURLY_BRACKET_TOKEN\"] = 12] = \"RIGHT_CURLY_BRACKET_TOKEN\";\n TokenType[TokenType[\"SUFFIX_MATCH_TOKEN\"] = 13] = \"SUFFIX_MATCH_TOKEN\";\n TokenType[TokenType[\"SUBSTRING_MATCH_TOKEN\"] = 14] = \"SUBSTRING_MATCH_TOKEN\";\n TokenType[TokenType[\"DIMENSION_TOKEN\"] = 15] = \"DIMENSION_TOKEN\";\n TokenType[TokenType[\"PERCENTAGE_TOKEN\"] = 16] = \"PERCENTAGE_TOKEN\";\n TokenType[TokenType[\"NUMBER_TOKEN\"] = 17] = \"NUMBER_TOKEN\";\n TokenType[TokenType[\"FUNCTION\"] = 18] = \"FUNCTION\";\n TokenType[TokenType[\"FUNCTION_TOKEN\"] = 19] = \"FUNCTION_TOKEN\";\n TokenType[TokenType[\"IDENT_TOKEN\"] = 20] = \"IDENT_TOKEN\";\n TokenType[TokenType[\"COLUMN_TOKEN\"] = 21] = \"COLUMN_TOKEN\";\n TokenType[TokenType[\"URL_TOKEN\"] = 22] = \"URL_TOKEN\";\n TokenType[TokenType[\"BAD_URL_TOKEN\"] = 23] = \"BAD_URL_TOKEN\";\n TokenType[TokenType[\"CDC_TOKEN\"] = 24] = \"CDC_TOKEN\";\n TokenType[TokenType[\"CDO_TOKEN\"] = 25] = \"CDO_TOKEN\";\n TokenType[TokenType[\"COLON_TOKEN\"] = 26] = \"COLON_TOKEN\";\n TokenType[TokenType[\"SEMICOLON_TOKEN\"] = 27] = \"SEMICOLON_TOKEN\";\n TokenType[TokenType[\"LEFT_SQUARE_BRACKET_TOKEN\"] = 28] = \"LEFT_SQUARE_BRACKET_TOKEN\";\n TokenType[TokenType[\"RIGHT_SQUARE_BRACKET_TOKEN\"] = 29] = \"RIGHT_SQUARE_BRACKET_TOKEN\";\n TokenType[TokenType[\"UNICODE_RANGE_TOKEN\"] = 30] = \"UNICODE_RANGE_TOKEN\";\n TokenType[TokenType[\"WHITESPACE_TOKEN\"] = 31] = \"WHITESPACE_TOKEN\";\n TokenType[TokenType[\"EOF_TOKEN\"] = 32] = \"EOF_TOKEN\";\n })(TokenType || (TokenType = {}));\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE$1 = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\n var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\n var isHex = function (codePoint) {\n return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n };\n var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\n var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\n var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\n var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\n var isWhiteSpace = function (codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE$1;\n };\n var isNameStartCodePoint = function (codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n var isNameCodePoint = function (codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n var isNonPrintableCodePoint = function (codePoint) {\n return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE);\n };\n var isValidEscape = function (c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n return c2 !== LINE_FEED;\n };\n var isIdentifierStart = function (c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n }\n else if (isNameStartCodePoint(c1)) {\n return true;\n }\n else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n };\n var isNumberStart = function (c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n return c2 === FULL_STOP && isDigit(c3);\n }\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n return isDigit(c1);\n };\n var stringToNumber = function (codePoints) {\n var c = 0;\n var 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 var integers = [];\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n var int = integers.length ? parseInt(fromCodePoint.apply(void 0, integers), 10) : 0;\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n var fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint.apply(void 0, fraction), 10) : 0;\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n var expsign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n var exponent = [];\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n var exp = exponent.length ? parseInt(fromCodePoint.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n var LEFT_PARENTHESIS_TOKEN = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n };\n var COMMA_TOKEN = { type: TokenType.COMMA_TOKEN };\n var SUFFIX_MATCH_TOKEN = { type: TokenType.SUFFIX_MATCH_TOKEN };\n var PREFIX_MATCH_TOKEN = { type: TokenType.PREFIX_MATCH_TOKEN };\n var COLUMN_TOKEN = { type: TokenType.COLUMN_TOKEN };\n var DASH_MATCH_TOKEN = { type: TokenType.DASH_MATCH_TOKEN };\n var INCLUDE_MATCH_TOKEN = { type: TokenType.INCLUDE_MATCH_TOKEN };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n };\n var SUBSTRING_MATCH_TOKEN = { type: TokenType.SUBSTRING_MATCH_TOKEN };\n var BAD_URL_TOKEN = { type: TokenType.BAD_URL_TOKEN };\n var BAD_STRING_TOKEN = { type: TokenType.BAD_STRING_TOKEN };\n var CDO_TOKEN = { type: TokenType.CDO_TOKEN };\n var CDC_TOKEN = { type: TokenType.CDC_TOKEN };\n var COLON_TOKEN = { type: TokenType.COLON_TOKEN };\n var SEMICOLON_TOKEN = { type: TokenType.SEMICOLON_TOKEN };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n };\n var WHITESPACE_TOKEN = { type: TokenType.WHITESPACE_TOKEN };\n var EOF_TOKEN = { type: TokenType.EOF_TOKEN };\n var Tokenizer = /** @class */ (function () {\n function Tokenizer() {\n this._value = [];\n }\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints(chunk));\n };\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n };\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return { type: TokenType.HASH_TOKEN, value: value, flags: 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 var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\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 var 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 (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return { type: TokenType.AT_KEYWORD_TOKEN, value: 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 var u1 = this.peekCodePoint(0);\n var 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 if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };\n };\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n return typeof value === 'undefined' ? -1 : value;\n };\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n return this._value[delta];\n };\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n var end = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start_1, end: end };\n }\n var start = parseInt(fromCodePoint.apply(void 0, digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var end = parseInt(fromCodePoint.apply(void 0, endDigits), 16);\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: end };\n }\n else {\n return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: start };\n }\n };\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n }\n else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: TokenType.FUNCTION_TOKEN, value: value };\n }\n return { type: TokenType.IDENT_TOKEN, value: value };\n };\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF) {\n return { type: TokenType.URL_TOKEN, value: '' };\n }\n var next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\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 this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };\n }\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.apply(void 0, value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n }\n else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n }\n else {\n value.push(codePoint);\n }\n }\n };\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 60000;\n var value = '';\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n return value;\n };\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n do {\n var codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: TokenType.STRING_TOKEN, value: value };\n }\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n if (codePoint === REVERSE_SOLIDUS) {\n var 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 }\n else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n i++;\n } while (true);\n };\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n var 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 c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var 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 return [stringToNumber(repr), type];\n };\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return { type: TokenType.DIMENSION_TOKEN, number: number, flags: flags, unit: unit };\n }\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: TokenType.PERCENTAGE_TOKEN, number: number, flags: flags };\n }\n return { type: TokenType.NUMBER_TOKEN, number: number, flags: flags };\n };\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n if (isHex(codePoint)) {\n var hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n var hexCodePoint = parseInt(hex, 16);\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n return hexCodePoint;\n }\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n return codePoint;\n };\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n }\n else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n }\n else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n return Tokenizer;\n }());\n\n var Parser = /** @class */ (function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n while (true) {\n var value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n };\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\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 return token;\n };\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = { type: type, values: [] };\n var token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n while (true) {\n var token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n return Parser;\n }());\n var isDimensionToken = function (token) { return token.type === TokenType.DIMENSION_TOKEN; };\n var isNumberToken = function (token) { return token.type === TokenType.NUMBER_TOKEN; };\n var isIdentToken = function (token) { return token.type === TokenType.IDENT_TOKEN; };\n var isStringToken = function (token) { return token.type === TokenType.STRING_TOKEN; };\n var isIdentWithValue = function (token, value) {\n return isIdentToken(token) && token.value === value;\n };\n var nonWhiteSpace = function (token) { return token.type !== TokenType.WHITESPACE_TOKEN; };\n var nonFunctionArgSeparator = function (token) {\n return token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n };\n var parseFunctionArgs = function (tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (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 if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n return args;\n };\n var isEndingTokenFor = function (token, type) {\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 return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n };\n\n var isLength = function (token) {\n return token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n };\n\n var isLengthPercentage = function (token) {\n return token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\n };\n var parseLengthPercentageTuple = function (tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n var ZERO_LENGTH = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n };\n var getAbsoluteValueForTuple = function (tuple, width, height) {\n var x = tuple[0], y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n var getAbsoluteValue = function (token, parent) {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\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 return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function (value) {\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 throw new Error(\"Unsupported angle type\");\n }\n };\n var isAngle = function (value) {\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 var parseNamedSide = function (tokens) {\n var sideOrCorner = tokens\n .filter(isIdentToken)\n .map(function (ident) { return ident.value; })\n .join(' ');\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 return 0;\n };\n var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n var color = {\n name: 'color',\n parse: function (value) {\n if (value.type === TokenType.FUNCTION) {\n var 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(value.values);\n }\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var 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 if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var 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 if (value.type === TokenType.IDENT_TOKEN) {\n var namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n return COLORS.TRANSPARENT;\n }\n };\n var isTransparent = function (color) { return (0xff & color) === 0; };\n var asString = function (color) {\n var alpha = 0xff & color;\n var blue = 0xff & (color >> 8);\n var green = 0xff & (color >> 16);\n var red = 0xff & (color >> 24);\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n var pack = function (r, g, b, a) {\n return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n };\n var getTokenColorValue = function (token, i) {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n return 0;\n };\n var rgb = function (args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n return pack(r, g, b, 1);\n }\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n return pack(r, g, b, a);\n }\n return 0;\n };\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n }\n else if (hue < 1 / 2) {\n return t2;\n }\n else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n }\n else {\n return t1;\n }\n }\n var hsl = function (args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n var h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n var COLORS = {\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\n var PropertyDescriptorParsingType;\n (function (PropertyDescriptorParsingType) {\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"VALUE\"] = 0] = \"VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"LIST\"] = 1] = \"LIST\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"IDENT_VALUE\"] = 2] = \"IDENT_VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TYPE_VALUE\"] = 3] = \"TYPE_VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TOKEN_VALUE\"] = 4] = \"TOKEN_VALUE\";\n })(PropertyDescriptorParsingType || (PropertyDescriptorParsingType = {}));\n\n var BACKGROUND_CLIP;\n (function (BACKGROUND_CLIP) {\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"BORDER_BOX\"] = 0] = \"BORDER_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"PADDING_BOX\"] = 1] = \"PADDING_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"CONTENT_BOX\"] = 2] = \"CONTENT_BOX\";\n })(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return tokens.map(function (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\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n\n var parseColorStop = function (args) {\n var color$1 = color.parse(args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? { color: color$1, stop: stop } : { color: color$1, stop: null };\n };\n var processColorStops = function (stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n var processStops = [];\n var previous = 0;\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n }\n else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n }\n else {\n processStops.push(null);\n }\n }\n var gapBegin = null;\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n }\n else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n return stops.map(function (_a, i) {\n var color = _a.color;\n return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n });\n };\n var getAngleFromCorner = function (corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n var calculateGradientDirection = function (angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\n var findCorner = function (width, height, x, y, closest) {\n var corners = [[0, 0], [0, height], [width, 0], [width, height]];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0], cy = corner[1];\n var 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 return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n var calculateRadius = function (gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\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 }\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 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(distance(x, y), distance(x, y - height), distance(x - width, y), 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 var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\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 }\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 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(distance(x, y), distance(x, y - height), distance(x - width, y), 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 var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\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 return [rx, ry];\n };\n\n var linearGradient = function (tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = angle.parse(firstToken);\n return;\n }\n }\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n return { angle: angle$1, stops: stops, type: CSSImageType.LINEAR_GRADIENT };\n };\n\n var prefixLinearGradient = function (tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n };\n\n var testRangeBounds = function (document) {\n var TEST_HEIGHT = 123;\n if (document.createRange) {\n var range = document.createRange();\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n return false;\n };\n var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\n var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\n var testSVG = function (document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n }\n catch (e) {\n return false;\n }\n return true;\n };\n var isGreenPixel = function (data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n var testForeignObject = function (document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var 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 var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG(svg)\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var 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(function (img) {\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(function () { return false; });\n };\n var createForeignObjectSVG = function (width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\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 foreignObject.appendChild(node);\n return svg;\n };\n var loadSerializedSVG = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n return value;\n },\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n return value;\n },\n get SUPPORT_CORS_XHR() {\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n return value;\n }\n };\n\n var Logger = /** @class */ (function () {\n function Logger(_a) {\n var id = _a.id, enabled = _a.enabled;\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.prototype.getTime = function () {\n return Date.now() - this.start;\n };\n Logger.create = function (options) {\n Logger.instances[options.id] = new Logger(options);\n };\n Logger.destroy = function (id) {\n delete Logger.instances[id];\n };\n Logger.getInstance = function (id) {\n var instance = Logger.instances[id];\n if (typeof instance === 'undefined') {\n throw new Error(\"No logger instance found with id \" + id);\n }\n return instance;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\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.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.instances = {};\n return Logger;\n }());\n\n var CacheStorage = /** @class */ (function () {\n function CacheStorage() {\n }\n CacheStorage.create = function (name, options) {\n return (CacheStorage._caches[name] = new Cache(name, options));\n };\n CacheStorage.destroy = function (name) {\n delete CacheStorage._caches[name];\n };\n CacheStorage.open = function (name) {\n var cache = CacheStorage._caches[name];\n if (typeof cache !== 'undefined') {\n return cache;\n }\n throw new Error(\"Cache with key \\\"\" + name + \"\\\" not found\");\n };\n CacheStorage.getOrigin = function (url) {\n var link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\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 CacheStorage.isSameOrigin = function (src) {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n };\n CacheStorage.setContext = function (window) {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n };\n CacheStorage.getInstance = function () {\n var current = CacheStorage._current;\n if (current === null) {\n throw new Error(\"No cache instance attached\");\n }\n return current;\n };\n CacheStorage.attachInstance = function (cache) {\n CacheStorage._current = cache;\n };\n CacheStorage.detachInstance = function () {\n CacheStorage._current = null;\n };\n CacheStorage._caches = {};\n CacheStorage._origin = 'about:blank';\n CacheStorage._current = null;\n return CacheStorage;\n }());\n var Cache = /** @class */ (function () {\n function Cache(id, options) {\n this.id = id;\n this._options = options;\n this._cache = {};\n }\n Cache.prototype.addImage = function (src) {\n var result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n if (isBlobImage(src) || isRenderable(src)) {\n this._cache[src] = this.loadImage(src);\n return result;\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Cache.prototype.match = function (src) {\n return this._cache[src];\n };\n Cache.prototype.loadImage = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var isSameOrigin, useCORS, useProxy, src;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isSameOrigin = CacheStorage.isSameOrigin(key);\n useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n useProxy = !isInlineImage(key) &&\n !isSameOrigin &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {\n return [2 /*return*/];\n }\n src = key;\n if (!useProxy) return [3 /*break*/, 2];\n return [4 /*yield*/, this.proxy(src)];\n case 1:\n src = _a.sent();\n _a.label = 2;\n case 2:\n Logger.getInstance(this.id).debug(\"Added image \" + key.substring(0, 256));\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return 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(function () { return resolve(img); }, 500);\n }\n if (_this._options.imageTimeout > 0) {\n setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\n }\n })];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Cache.prototype.has = function (key) {\n return typeof this._cache[key] !== 'undefined';\n };\n Cache.prototype.keys = function () {\n return Promise.resolve(Object.keys(this._cache));\n };\n Cache.prototype.proxy = function (src) {\n var _this = this;\n var proxy = this._options.proxy;\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n var key = src.substring(0, 256);\n return new Promise(function (resolve, reject) {\n var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n }\n else {\n var reader_1 = new FileReader();\n reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\n reader_1.addEventListener('error', function (e) { return reject(e); }, false);\n reader_1.readAsDataURL(xhr.response);\n }\n }\n else {\n reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n }\n };\n xhr.onerror = reject;\n xhr.open('GET', proxy + \"?url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n if (_this._options.imageTimeout) {\n var timeout_1 = _this._options.imageTimeout;\n xhr.timeout = timeout_1;\n xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\n }\n xhr.send();\n });\n };\n return Cache;\n }());\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n var INLINE_IMG = /^data:image\\/.*/i;\n var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\n var isInlineImage = function (src) { return INLINE_IMG.test(src); };\n var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\n var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\n var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\n var webkitGradient = function (tokens) {\n var angle = deg(180);\n var stops = [];\n var type = CSSImageType.LINEAR_GRADIENT;\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n }\n else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n var color$1 = color.parse(firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color: color$1 });\n }\n else if (firstToken.name === 'to') {\n var color$1 = color.parse(firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color: color$1 });\n }\n else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n var color$1 = color.parse(values[1]);\n var stop_1 = values[0];\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop_1.number * 100, flags: stop_1.flags },\n color: color$1\n });\n }\n }\n }\n }\n });\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n }\n : { size: size, shape: shape, stops: stops, position: position, type: type };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n var radialGradient = function (tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\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 }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\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_1 = 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 }\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 if (isColorStop) {\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };\n };\n\n var prefixRadialGradient = function (tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce(function (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 }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n else if (i === 1) {\n isColorStop = arg.reduce(function (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 }\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 if (isColorStop) {\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };\n };\n\n var CSSImageType;\n (function (CSSImageType) {\n CSSImageType[CSSImageType[\"URL\"] = 0] = \"URL\";\n CSSImageType[CSSImageType[\"LINEAR_GRADIENT\"] = 1] = \"LINEAR_GRADIENT\";\n CSSImageType[CSSImageType[\"RADIAL_GRADIENT\"] = 2] = \"RADIAL_GRADIENT\";\n })(CSSImageType || (CSSImageType = {}));\n var isLinearGradient = function (background) {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n };\n var isRadialGradient = function (background) {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n };\n var CSSRadialShape;\n (function (CSSRadialShape) {\n CSSRadialShape[CSSRadialShape[\"CIRCLE\"] = 0] = \"CIRCLE\";\n CSSRadialShape[CSSRadialShape[\"ELLIPSE\"] = 1] = \"ELLIPSE\";\n })(CSSRadialShape || (CSSRadialShape = {}));\n var CSSRadialExtent;\n (function (CSSRadialExtent) {\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_SIDE\"] = 0] = \"CLOSEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_SIDE\"] = 1] = \"FARTHEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_CORNER\"] = 2] = \"CLOSEST_CORNER\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_CORNER\"] = 3] = \"FARTHEST_CORNER\";\n })(CSSRadialExtent || (CSSRadialExtent = {}));\n var image = {\n name: 'image',\n parse: function (value) {\n if (value.type === TokenType.URL_TOKEN) {\n var image_1 = { url: value.value, type: CSSImageType.URL };\n CacheStorage.getInstance().addImage(value.value);\n return image_1;\n }\n if (value.type === TokenType.FUNCTION) {\n var 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(value.values);\n }\n throw new Error(\"Unsupported image type\");\n }\n };\n function isSupportedImage(value) {\n return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];\n }\n var SUPPORTED_IMAGE_FUNCTIONS = {\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\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n return tokens.filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(image.parse);\n }\n };\n\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) { return values.filter(isLengthPercentage); })\n .map(parseLengthPercentageTuple);\n }\n };\n\n var BACKGROUND_REPEAT;\n (function (BACKGROUND_REPEAT) {\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT\"] = 0] = \"REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"NO_REPEAT\"] = 1] = \"NO_REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_X\"] = 2] = \"REPEAT_X\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_Y\"] = 3] = \"REPEAT_Y\";\n })(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) {\n return values\n .filter(isIdentToken)\n .map(function (token) { return token.value; })\n .join(' ');\n })\n .map(parseBackgroundRepeat);\n }\n };\n var parseBackgroundRepeat = function (value) {\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\n var BACKGROUND_SIZE;\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n }\n };\n var isBackgroundSizeInfoToken = function (value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function (side) { return ({\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n }); };\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function (side) { return ({\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) { return parseLengthPercentageTuple(tokens.filter(isLengthPercentage)); }\n }); };\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n var BORDER_STYLE;\n (function (BORDER_STYLE) {\n BORDER_STYLE[BORDER_STYLE[\"NONE\"] = 0] = \"NONE\";\n BORDER_STYLE[BORDER_STYLE[\"SOLID\"] = 1] = \"SOLID\";\n })(BORDER_STYLE || (BORDER_STYLE = {}));\n var borderStyleForSide = function (side) { return ({\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (style) {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n }\n return BORDER_STYLE.SOLID;\n }\n }); };\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function (side) { return ({\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function (token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n }); };\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n\n var color$1 = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0 /* NONE */);\n }\n };\n var parseDisplayValue = function (display) {\n switch (display) {\n case 'block':\n return 2 /* BLOCK */;\n case 'inline':\n return 4 /* INLINE */;\n case 'run-in':\n return 8 /* RUN_IN */;\n case 'flow':\n return 16 /* FLOW */;\n case 'flow-root':\n return 32 /* FLOW_ROOT */;\n case 'table':\n return 64 /* TABLE */;\n case 'flex':\n case '-webkit-flex':\n return 128 /* FLEX */;\n case 'grid':\n case '-ms-grid':\n return 256 /* GRID */;\n case 'ruby':\n return 512 /* RUBY */;\n case 'subgrid':\n return 1024 /* SUBGRID */;\n case 'list-item':\n return 2048 /* LIST_ITEM */;\n case 'table-row-group':\n return 4096 /* TABLE_ROW_GROUP */;\n case 'table-header-group':\n return 8192 /* TABLE_HEADER_GROUP */;\n case 'table-footer-group':\n return 16384 /* TABLE_FOOTER_GROUP */;\n case 'table-row':\n return 32768 /* TABLE_ROW */;\n case 'table-cell':\n return 65536 /* TABLE_CELL */;\n case 'table-column-group':\n return 131072 /* TABLE_COLUMN_GROUP */;\n case 'table-column':\n return 262144 /* TABLE_COLUMN */;\n case 'table-caption':\n return 524288 /* TABLE_CAPTION */;\n case 'ruby-base':\n return 1048576 /* RUBY_BASE */;\n case 'ruby-text':\n return 2097152 /* RUBY_TEXT */;\n case 'ruby-base-container':\n return 4194304 /* RUBY_BASE_CONTAINER */;\n case 'ruby-text-container':\n return 8388608 /* RUBY_TEXT_CONTAINER */;\n case 'contents':\n return 16777216 /* CONTENTS */;\n case 'inline-block':\n return 33554432 /* INLINE_BLOCK */;\n case 'inline-list-item':\n return 67108864 /* INLINE_LIST_ITEM */;\n case 'inline-table':\n return 134217728 /* INLINE_TABLE */;\n case 'inline-flex':\n return 268435456 /* INLINE_FLEX */;\n case 'inline-grid':\n return 536870912 /* INLINE_GRID */;\n }\n return 0 /* NONE */;\n };\n\n var FLOAT;\n (function (FLOAT) {\n FLOAT[FLOAT[\"NONE\"] = 0] = \"NONE\";\n FLOAT[FLOAT[\"LEFT\"] = 1] = \"LEFT\";\n FLOAT[FLOAT[\"RIGHT\"] = 2] = \"RIGHT\";\n FLOAT[FLOAT[\"INLINE_START\"] = 3] = \"INLINE_START\";\n FLOAT[FLOAT[\"INLINE_END\"] = 4] = \"INLINE_END\";\n })(FLOAT || (FLOAT = {}));\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (float) {\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\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function (token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n return 0;\n }\n };\n\n var LINE_BREAK;\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (lineBreak) {\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\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n };\n var computeLineHeight = function (token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n }\n else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n }\n else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function (token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n return image.parse(token);\n }\n };\n\n var LIST_STYLE_POSITION;\n (function (LIST_STYLE_POSITION) {\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"INSIDE\"] = 0] = \"INSIDE\";\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"OUTSIDE\"] = 1] = \"OUTSIDE\";\n })(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (position) {\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\n var LIST_STYLE_TYPE;\n (function (LIST_STYLE_TYPE) {\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"NONE\"] = -1] = \"NONE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISC\"] = 0] = \"DISC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CIRCLE\"] = 1] = \"CIRCLE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SQUARE\"] = 2] = \"SQUARE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL\"] = 3] = \"DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_DECIMAL\"] = 4] = \"CJK_DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL_LEADING_ZERO\"] = 5] = \"DECIMAL_LEADING_ZERO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ROMAN\"] = 6] = \"LOWER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ROMAN\"] = 7] = \"UPPER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_GREEK\"] = 8] = \"LOWER_GREEK\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ALPHA\"] = 9] = \"LOWER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ALPHA\"] = 10] = \"UPPER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARABIC_INDIC\"] = 11] = \"ARABIC_INDIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARMENIAN\"] = 12] = \"ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"BENGALI\"] = 13] = \"BENGALI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CAMBODIAN\"] = 14] = \"CAMBODIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_EARTHLY_BRANCH\"] = 15] = \"CJK_EARTHLY_BRANCH\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_HEAVENLY_STEM\"] = 16] = \"CJK_HEAVENLY_STEM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_IDEOGRAPHIC\"] = 17] = \"CJK_IDEOGRAPHIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DEVANAGARI\"] = 18] = \"DEVANAGARI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ETHIOPIC_NUMERIC\"] = 19] = \"ETHIOPIC_NUMERIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GEORGIAN\"] = 20] = \"GEORGIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GUJARATI\"] = 21] = \"GUJARATI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GURMUKHI\"] = 22] = \"GURMUKHI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HEBREW\"] = 22] = \"HEBREW\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA\"] = 23] = \"HIRAGANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA_IROHA\"] = 24] = \"HIRAGANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_FORMAL\"] = 25] = \"JAPANESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_INFORMAL\"] = 26] = \"JAPANESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KANNADA\"] = 27] = \"KANNADA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA\"] = 28] = \"KATAKANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA_IROHA\"] = 29] = \"KATAKANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KHMER\"] = 30] = \"KHMER\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANGUL_FORMAL\"] = 31] = \"KOREAN_HANGUL_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_FORMAL\"] = 32] = \"KOREAN_HANJA_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_INFORMAL\"] = 33] = \"KOREAN_HANJA_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LAO\"] = 34] = \"LAO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ARMENIAN\"] = 35] = \"LOWER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MALAYALAM\"] = 36] = \"MALAYALAM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MONGOLIAN\"] = 37] = \"MONGOLIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MYANMAR\"] = 38] = \"MYANMAR\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ORIYA\"] = 39] = \"ORIYA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"PERSIAN\"] = 40] = \"PERSIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_FORMAL\"] = 41] = \"SIMP_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_INFORMAL\"] = 42] = \"SIMP_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TAMIL\"] = 43] = \"TAMIL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TELUGU\"] = 44] = \"TELUGU\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"THAI\"] = 45] = \"THAI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TIBETAN\"] = 46] = \"TIBETAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_FORMAL\"] = 47] = \"TRAD_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_INFORMAL\"] = 48] = \"TRAD_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ARMENIAN\"] = 49] = \"UPPER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_OPEN\"] = 50] = \"DISCLOSURE_OPEN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_CLOSED\"] = 51] = \"DISCLOSURE_CLOSED\";\n })(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (type) {\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\n var marginForSide = function (side) { return ({\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n }); };\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n\n var OVERFLOW;\n (function (OVERFLOW) {\n OVERFLOW[OVERFLOW[\"VISIBLE\"] = 0] = \"VISIBLE\";\n OVERFLOW[OVERFLOW[\"HIDDEN\"] = 1] = \"HIDDEN\";\n OVERFLOW[OVERFLOW[\"SCROLL\"] = 2] = \"SCROLL\";\n OVERFLOW[OVERFLOW[\"AUTO\"] = 3] = \"AUTO\";\n })(OVERFLOW || (OVERFLOW = {}));\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n };\n\n var OVERFLOW_WRAP;\n (function (OVERFLOW_WRAP) {\n OVERFLOW_WRAP[\"NORMAL\"] = \"normal\";\n OVERFLOW_WRAP[\"BREAK_WORD\"] = \"break-word\";\n })(OVERFLOW_WRAP || (OVERFLOW_WRAP = {}));\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (overflow) {\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\n var paddingForSide = function (side) { return ({\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n }); };\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n\n var TEXT_ALIGN;\n (function (TEXT_ALIGN) {\n TEXT_ALIGN[TEXT_ALIGN[\"LEFT\"] = 0] = \"LEFT\";\n TEXT_ALIGN[TEXT_ALIGN[\"CENTER\"] = 1] = \"CENTER\";\n TEXT_ALIGN[TEXT_ALIGN[\"RIGHT\"] = 2] = \"RIGHT\";\n })(TEXT_ALIGN || (TEXT_ALIGN = {}));\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (textAlign) {\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\n var POSITION;\n (function (POSITION) {\n POSITION[POSITION[\"STATIC\"] = 0] = \"STATIC\";\n POSITION[POSITION[\"RELATIVE\"] = 1] = \"RELATIVE\";\n POSITION[POSITION[\"ABSOLUTE\"] = 2] = \"ABSOLUTE\";\n POSITION[POSITION[\"FIXED\"] = 3] = \"FIXED\";\n POSITION[POSITION[\"STICKY\"] = 4] = \"STICKY\";\n })(POSITION || (POSITION = {}));\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (position) {\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 return POSITION.STATIC;\n }\n };\n\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else {\n shadow.blur = token;\n }\n c++;\n }\n else {\n shadow.color = color.parse(token);\n }\n }\n return shadow;\n });\n }\n };\n\n var TEXT_TRANSFORM;\n (function (TEXT_TRANSFORM) {\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"NONE\"] = 0] = \"NONE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"LOWERCASE\"] = 1] = \"LOWERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"UPPERCASE\"] = 2] = \"UPPERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"CAPITALIZE\"] = 3] = \"CAPITALIZE\";\n })(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (textTransform) {\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 return TEXT_TRANSFORM.NONE;\n }\n };\n\n var transform = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function (token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n if (token.type === TokenType.FUNCTION) {\n var 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 return null;\n }\n };\n var matrix = function (args) {\n var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });\n return values.length === 6 ? values : null;\n };\n // doesn't support 3D transforms at the moment\n var matrix3d = function (args) {\n var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });\n var a1 = values[0], b1 = values[1], _a = values[2], _b = values[3], a2 = values[4], b2 = values[5], _c = values[6], _d = values[7], _e = values[8], _f = values[9], _g = values[10], _h = values[11], a4 = values[12], b4 = values[13], _j = values[14], _k = values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n\n var DEFAULT_VALUE = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n var origins = tokens.filter(isLengthPercentage);\n if (origins.length !== 2) {\n return DEFAULT;\n }\n return [origins[0], origins[1]];\n }\n };\n\n var VISIBILITY;\n (function (VISIBILITY) {\n VISIBILITY[VISIBILITY[\"VISIBLE\"] = 0] = \"VISIBLE\";\n VISIBILITY[VISIBILITY[\"HIDDEN\"] = 1] = \"HIDDEN\";\n VISIBILITY[VISIBILITY[\"COLLAPSE\"] = 2] = \"COLLAPSE\";\n })(VISIBILITY || (VISIBILITY = {}));\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (visibility) {\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\n var WORD_BREAK;\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (wordBreak) {\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\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function (token) {\n if (token.type === TokenType.IDENT_TOKEN) {\n return { auto: true, order: 0 };\n }\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function (token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n };\n\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n return tokens\n .filter(isIdentToken)\n .map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1 /* UNDERLINE */;\n case 'overline':\n return 2 /* OVERLINE */;\n case 'line-through':\n return 3 /* LINE_THROUGH */;\n case 'none':\n return 4 /* BLINK */;\n }\n return 0 /* NONE */;\n })\n .filter(function (line) { return line !== 0 /* NONE */; });\n }\n };\n\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (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(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n }\n };\n\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n };\n\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function (token) {\n if (isNumberToken(token)) {\n return token.number;\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 return 400;\n }\n };\n\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n }\n };\n\n var FONT_STYLE;\n (function (FONT_STYLE) {\n FONT_STYLE[\"NORMAL\"] = \"normal\";\n FONT_STYLE[\"ITALIC\"] = \"italic\";\n FONT_STYLE[\"OBLIQUE\"] = \"oblique\";\n })(FONT_STYLE || (FONT_STYLE = {}));\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function (overflow) {\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\n var contains = function (bit, value) { return (bit & value) !== 0; };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n return tokens;\n }\n };\n\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment: increment });\n }\n }\n return increments;\n }\n };\n\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset: reset });\n }\n }\n return resets;\n }\n };\n\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function (tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n if (filtered.length % 2 !== 0) {\n return null;\n }\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({ open: open_1, close: close_1 });\n }\n return quotes;\n }\n };\n var getQuote = function (quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function (tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n }\n else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else if (c === 2) {\n shadow.blur = token;\n }\n else {\n shadow.spread = token;\n }\n c++;\n }\n else {\n shadow.color = color.parse(token);\n }\n }\n return shadow;\n });\n }\n };\n\n var CSSParsedDeclaration = /** @class */ (function () {\n function CSSParsedDeclaration(declaration) {\n this.backgroundClip = parse(backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(boxShadow, declaration.boxShadow);\n this.color = parse(color$1, declaration.color);\n this.display = parse(display, declaration.display);\n this.float = parse(float, declaration.cssFloat);\n this.fontFamily = parse(fontFamily, declaration.fontFamily);\n this.fontSize = parse(fontSize, declaration.fontSize);\n this.fontStyle = parse(fontStyle, declaration.fontStyle);\n this.fontVariant = parse(fontVariant, declaration.fontVariant);\n this.fontWeight = parse(fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(lineBreak, declaration.lineBreak);\n this.lineHeight = parse(lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(listStyleType, declaration.listStyleType);\n this.marginTop = parse(marginTop, declaration.marginTop);\n this.marginRight = parse(marginRight, declaration.marginRight);\n this.marginBottom = parse(marginBottom, declaration.marginBottom);\n this.marginLeft = parse(marginLeft, declaration.marginLeft);\n this.opacity = parse(opacity, declaration.opacity);\n var overflowTuple = parse(overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(paddingTop, declaration.paddingTop);\n this.paddingRight = parse(paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(paddingLeft, declaration.paddingLeft);\n this.position = parse(position, declaration.position);\n this.textAlign = parse(textAlign, declaration.textAlign);\n this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color);\n this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine);\n this.textShadow = parse(textShadow, declaration.textShadow);\n this.textTransform = parse(textTransform, declaration.textTransform);\n this.transform = parse(transform, declaration.transform);\n this.transformOrigin = parse(transformOrigin, declaration.transformOrigin);\n this.visibility = parse(visibility, declaration.visibility);\n this.wordBreak = parse(wordBreak, declaration.wordBreak);\n this.zIndex = parse(zIndex, declaration.zIndex);\n }\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n };\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== POSITION.STATIC;\n };\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== FLOAT.NONE;\n };\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return (contains(this.display, 4 /* INLINE */) ||\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\n contains(this.display, 536870912 /* INLINE_GRID */) ||\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n contains(this.display, 134217728 /* INLINE_TABLE */));\n };\n return CSSParsedDeclaration;\n }());\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\n function CSSParsedPseudoDeclaration(declaration) {\n this.content = parse(content, declaration.content);\n this.quotes = parse(quotes, declaration.quotes);\n }\n return CSSParsedPseudoDeclaration;\n }());\n var CSSParsedCounterDeclaration = /** @class */ (function () {\n function CSSParsedCounterDeclaration(declaration) {\n this.counterIncrement = parse(counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(counterReset, declaration.counterReset);\n }\n return CSSParsedCounterDeclaration;\n }());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parse = function (descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n var token = parser.parseComponentValue();\n return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(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(parser.parseComponentValue());\n case 'color':\n return color.parse(parser.parseComponentValue());\n case 'image':\n return image.parse(parser.parseComponentValue());\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n }\n }\n throw new Error(\"Attempting to parse unsupported css format type \" + descriptor.format);\n };\n\n var ElementContainer = /** @class */ (function () {\n function ElementContainer(element) {\n this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null));\n this.textNodes = [];\n this.elements = [];\n if (this.styles.transform !== null && isHTMLElementNode(element)) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n this.bounds = parseBounds(element);\n this.flags = 0;\n }\n return ElementContainer;\n }());\n\n var TextBounds = /** @class */ (function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n return TextBounds;\n }());\n var parseTextBounds = function (value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length)));\n }\n else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(node)));\n node = replacementNode;\n }\n }\n else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n return textBounds;\n };\n var getWrapperBounds = function (node) {\n var ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n return new Bounds(0, 0, 0, 0);\n };\n var getRangeBounds = function (node, offset, length) {\n var ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return Bounds.fromClientRect(range.getBoundingClientRect());\n };\n var breakText = function (value, styles) {\n return styles.letterSpacing !== 0 ? toCodePoints(value).map(function (i) { return fromCodePoint(i); }) : breakWords(value, styles);\n };\n var breakWords = function (str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n words.push(bk.value.slice());\n }\n }\n return words;\n };\n\n var TextContainer = /** @class */ (function () {\n function TextContainer(node, styles) {\n this.text = transform$1(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(this.text, styles, node);\n }\n return TextContainer;\n }());\n var transform$1 = function (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 var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n var capitalize = function (m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n return m;\n };\n\n var ImageElementContainer = /** @class */ (function (_super) {\n __extends(ImageElementContainer, _super);\n function ImageElementContainer(img) {\n var _this = _super.call(this, img) || this;\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n CacheStorage.getInstance().addImage(_this.src);\n return _this;\n }\n return ImageElementContainer;\n }(ElementContainer));\n\n var CanvasElementContainer = /** @class */ (function (_super) {\n __extends(CanvasElementContainer, _super);\n function CanvasElementContainer(canvas) {\n var _this = _super.call(this, canvas) || this;\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n return CanvasElementContainer;\n }(ElementContainer));\n\n var SVGElementContainer = /** @class */ (function (_super) {\n __extends(SVGElementContainer, _super);\n function SVGElementContainer(img) {\n var _this = _super.call(this, img) || this;\n var s = new XMLSerializer();\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 CacheStorage.getInstance().addImage(_this.svg);\n return _this;\n }\n return SVGElementContainer;\n }(ElementContainer));\n\n var LIElementContainer = /** @class */ (function (_super) {\n __extends(LIElementContainer, _super);\n function LIElementContainer(element) {\n var _this = _super.call(this, element) || this;\n _this.value = element.value;\n return _this;\n }\n return LIElementContainer;\n }(ElementContainer));\n\n var OLElementContainer = /** @class */ (function (_super) {\n __extends(OLElementContainer, _super);\n function OLElementContainer(element) {\n var _this = _super.call(this, element) || this;\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n return OLElementContainer;\n }(ElementContainer));\n\n var CHECKBOX_BORDER_RADIUS = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n ];\n var RADIO_BORDER_RADIUS = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n ];\n var reformatInputBounds = function (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 }\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 var getInputValue = function (node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n var InputElementContainer = /** @class */ (function (_super) {\n __extends(InputElementContainer, _super);\n function InputElementContainer(input) {\n var _this = _super.call(this, input) || this;\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;\n _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;\n _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n _this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;\n break;\n }\n return _this;\n }\n return InputElementContainer;\n }(ElementContainer));\n\n var SelectElementContainer = /** @class */ (function (_super) {\n __extends(SelectElementContainer, _super);\n function SelectElementContainer(element) {\n var _this = _super.call(this, element) || this;\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n return SelectElementContainer;\n }(ElementContainer));\n\n var TextareaElementContainer = /** @class */ (function (_super) {\n __extends(TextareaElementContainer, _super);\n function TextareaElementContainer(element) {\n var _this = _super.call(this, element) || this;\n _this.value = element.value;\n return _this;\n }\n return TextareaElementContainer;\n }(ElementContainer));\n\n var parseColor = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };\n var IFrameElementContainer = /** @class */ (function (_super) {\n __extends(IFrameElementContainer, _super);\n function IFrameElementContainer(iframe) {\n var _this = _super.call(this, iframe) || this;\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 (iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(iframe.contentWindow.document.documentElement);\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement)\n .backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? _this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n }\n catch (e) { }\n return _this;\n }\n return IFrameElementContainer;\n }(ElementContainer));\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n var parseNodeTree = function (node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(childNode, parent.styles));\n }\n else if (isElementNode(childNode)) {\n var container = createContainer(childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n }\n else if (createsStackingContext(container.styles)) {\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n }\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8 /* IS_LIST_OWNER */;\n }\n parent.elements.push(container);\n if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {\n parseNodeTree(childNode, container, root);\n }\n }\n }\n }\n };\n var createContainer = function (element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(element);\n }\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(element);\n }\n if (isSVGElement(element)) {\n return new SVGElementContainer(element);\n }\n if (isLIElement(element)) {\n return new LIElementContainer(element);\n }\n if (isOLElement(element)) {\n return new OLElementContainer(element);\n }\n if (isInputElement(element)) {\n return new InputElementContainer(element);\n }\n if (isSelectElement(element)) {\n return new SelectElementContainer(element);\n }\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(element);\n }\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(element);\n }\n return new ElementContainer(element);\n };\n var parseTree = function (element) {\n var container = createContainer(element);\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n parseNodeTree(element, container, container);\n return container;\n };\n var createsRealStackingContext = function (node, container, root) {\n return (container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent()));\n };\n var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\n var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\n var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n var isHTMLElementNode = function (node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n var isSVGElementNode = function (element) {\n return typeof element.className === 'object';\n };\n var isLIElement = function (node) { return node.tagName === 'LI'; };\n var isOLElement = function (node) { return node.tagName === 'OL'; };\n var isInputElement = function (node) { return node.tagName === 'INPUT'; };\n var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\n var isSVGElement = function (node) { return node.tagName === 'svg'; };\n var isBodyElement = function (node) { return node.tagName === 'BODY'; };\n var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\n var isImageElement = function (node) { return node.tagName === 'IMG'; };\n var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\n var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\n var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\n var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\n var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n\n var CounterState = /** @class */ (function () {\n function CounterState() {\n this.counters = {};\n }\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n };\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n };\n CounterState.prototype.parse = function (style) {\n var _this = this;\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n var counterNames = [];\n if (canReset) {\n counterReset.forEach(function (entry) {\n var 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 return counterNames;\n };\n return CounterState;\n }());\n var ROMAN_UPPER = {\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 var ARMENIAN = {\n integers: [\n 9000,\n 8000,\n 7000,\n 6000,\n 5000,\n 4000,\n 3000,\n 2000,\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 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 var HEBREW = {\n integers: [\n 10000,\n 9000,\n 8000,\n 7000,\n 6000,\n 5000,\n 4000,\n 3000,\n 2000,\n 1000,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 19,\n 18,\n 17,\n 16,\n 15,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 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 var GEORGIAN = {\n integers: [\n 10000,\n 9000,\n 8000,\n 7000,\n 6000,\n 5000,\n 4000,\n 3000,\n 2000,\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 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 var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n return (symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix);\n };\n var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n return string;\n };\n var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return ((value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) +\n suffix));\n };\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n if (suffix === void 0) { suffix = '. '; }\n var codePointRangeLength = symbols.length;\n return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n };\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n var tmp = Math.abs(value);\n var string = suffix;\n if (tmp === 0) {\n return numbers[0] + string;\n }\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n }\n else if (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 string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n }\n else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n return (value < 0 ? negativeSign : '') + string;\n };\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n var createCounterText = function (value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var 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 var 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(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).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(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).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(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\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(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\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(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\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(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\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\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n var DocumentCloner = /** @class */ (function () {\n function DocumentCloner(element, options) {\n this.options = options;\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 this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\n }\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\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 var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\n var onclone;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n documentClone.documentElement.style.top = -windowSize.top + 'px';\n documentClone.documentElement.style.left = -windowSize.left + 'px';\n documentClone.documentElement.style.position = 'absolute';\n }\n }\n onclone = this.options.onclone;\n if (typeof this.clonedReferenceElement === 'undefined') {\n return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n }\n if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n return [4 /*yield*/, documentClone.fonts.ready];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n if (typeof onclone === 'function') {\n return [2 /*return*/, Promise.resolve()\n .then(function () { return onclone(documentClone); })\n .then(function () { return iframe; })];\n }\n return [2 /*return*/, iframe];\n }\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 return iframeLoad;\n };\n DocumentCloner.prototype.createElementClone = function (node) {\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n /*\n if (isIFrameElement(node)) {\n return this.createIFrameClone(node);\n }\n */\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n var clone = node.cloneNode(false);\n // @ts-ignore\n if (isImageElement(clone) && clone.loading === 'lazy') {\n // @ts-ignore\n clone.loading = 'eager';\n }\n return clone;\n };\n DocumentCloner.prototype.createStyleClone = function (node) {\n try {\n var sheet = node.sheet;\n if (sheet && sheet.cssRules) {\n var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n var style = node.cloneNode(false);\n style.textContent = css;\n return style;\n }\n }\n catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n Logger.getInstance(this.options.id).error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.createCanvasClone = function (canvas) {\n if (this.options.inlineImages && canvas.ownerDocument) {\n var img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n }\n catch (e) {\n Logger.getInstance(this.options.id).info(\"Unable to clone canvas contents, canvas is tainted\");\n }\n }\n var clonedCanvas = canvas.cloneNode(false);\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n var ctx = canvas.getContext('2d');\n var clonedCtx = clonedCanvas.getContext('2d');\n if (clonedCtx) {\n if (ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n }\n else {\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n }\n catch (e) { }\n return clonedCanvas;\n };\n /*\n createIFrameClone(iframe: HTMLIFrameElement) {\n const tempIframe = <HTMLIFrameElement>iframe.cloneNode(false);\n const iframeKey = generateIframeKey();\n tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);\n\n const {width, height} = parseBounds(iframe);\n\n this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(iframe, this.options)\n .then(documentElement => {\n return this.renderer(\n documentElement,\n {\n allowTaint: this.options.allowTaint,\n backgroundColor: '#ffffff',\n canvas: null,\n imageTimeout: this.options.imageTimeout,\n logging: this.options.logging,\n proxy: this.options.proxy,\n removeContainer: this.options.removeContainer,\n scale: this.options.scale,\n foreignObjectRendering: this.options.foreignObjectRendering,\n useCORS: this.options.useCORS,\n target: new CanvasRenderer(),\n width,\n height,\n x: 0,\n y: 0,\n windowWidth: documentElement.ownerDocument.defaultView.innerWidth,\n windowHeight: documentElement.ownerDocument.defaultView.innerHeight,\n scrollX: documentElement.ownerDocument.defaultView.pageXOffset,\n scrollY: documentElement.ownerDocument.defaultView.pageYOffset\n },\n );\n })\n .then(\n (canvas: HTMLCanvasElement) =>\n new Promise((resolve, reject) => {\n const iframeCanvas = document.createElement('img');\n iframeCanvas.onload = () => resolve(canvas);\n iframeCanvas.onerror = (event) => {\n // Empty iframes may result in empty \"data:,\" URLs, which are invalid from the <img>'s point of view\n // and instead of `onload` cause `onerror` and unhandled rejection warnings\n // https://github.com/niklasvh/html2canvas/issues/1502\n iframeCanvas.src == 'data:,' ? resolve(canvas) : reject(event);\n };\n iframeCanvas.src = canvas.toDataURL();\n if (tempIframe.parentNode && iframe.ownerDocument && iframe.ownerDocument.defaultView) {\n tempIframe.parentNode.replaceChild(\n copyCSSStyles(\n iframe.ownerDocument.defaultView.getComputedStyle(iframe),\n iframeCanvas\n ),\n tempIframe\n );\n }\n })\n );\n return tempIframe;\n }\n */\n DocumentCloner.prototype.cloneNode = function (node) {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n var window = node.ownerDocument.defaultView;\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n var clone = this.createElementClone(node);\n var style = window.getComputedStyle(node);\n var styleBefore = window.getComputedStyle(node, ':before');\n var styleAfter = window.getComputedStyle(node, ':after');\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n var counters = this.counters.parse(new CSSParsedCounterDeclaration(style));\n var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (!isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child));\n }\n }\n }\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n this.counters.pop(counters);\n if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) {\n copyCSSStyles(style, clone);\n }\n //this.inlineAllImages(clone);\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n if ((isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))) {\n clone.value = node.value;\n }\n return clone;\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n var _this = this;\n if (!style) {\n return;\n }\n var value = style.content;\n var document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n this.counters.parse(new CSSParsedCounterDeclaration(style));\n var declaration = new CSSParsedPseudoDeclaration(style);\n var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n declaration.content.forEach(function (token) {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n else if (token.type === TokenType.URL_TOKEN) {\n var img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n }\n else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n var attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n }\n }\n else if (token.name === 'counter') {\n var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\n if (counter && isIdentToken(counter)) {\n var counterState = _this.counters.getCounterValue(counter.value);\n var counterType = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n }\n }\n else if (token.name === 'counters') {\n var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\n if (counter && isIdentToken(counter)) {\n var counterStates = _this.counters.getCounterValues(counter.value);\n var counterType_1 = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n var separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n var text = counterStates\n .map(function (value) { return createCounterText(value, counterType_1, false); })\n .join(separator);\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n }\n }\n else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\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 anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n var newClassName = pseudoElt === PseudoElementType.BEFORE\n ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\n : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n }\n else {\n clone.className += newClassName;\n }\n return anonymousReplacedElement;\n };\n DocumentCloner.destroy = function (container) {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n };\n return DocumentCloner;\n }());\n var PseudoElementType;\n (function (PseudoElementType) {\n PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n })(PseudoElementType || (PseudoElementType = {}));\n var createIFrameContainer = function (ownerDocument, bounds) {\n var cloneIframeContainer = ownerDocument.createElement('iframe');\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 return cloneIframeContainer;\n };\n var iframeLoader = function (iframe) {\n return new Promise(function (resolve, reject) {\n var cloneWindow = iframe.contentWindow;\n if (!cloneWindow) {\n return reject(\"No window assigned for iframe\");\n }\n var documentClone = cloneWindow.document;\n cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = function () {\n cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null;\n var interval = setInterval(function () {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n };\n var copyCSSStyles = function (style, target) {\n // Edge does not provide value for cssText\n for (var i = style.length - 1; i >= 0; i--) {\n var property = style.item(i);\n // Safari shows pseudoelements if content is set\n if (property !== 'content') {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n };\n var serializeDoctype = function (doctype) {\n var str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n if (doctype.publicId) {\n str += \"\\\"\" + doctype.publicId + \"\\\"\";\n }\n if (doctype.systemId) {\n str += \"\\\"\" + doctype.systemId + \"\\\"\";\n }\n str += '>';\n }\n return str;\n };\n var restoreOwnerScroll = function (ownerDocument, x, y) {\n if (ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n };\n var restoreNodeScroll = function (_a) {\n var element = _a[0], x = _a[1], y = _a[2];\n element.scrollLeft = x;\n element.scrollTop = y;\n };\n var PSEUDO_BEFORE = ':before';\n var PSEUDO_AFTER = ':after';\n var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n content: \\\"\\\" !important;\\n display: none !important;\\n}\";\n var createPseudoHideStyles = function (body) {\n createStyles(body, \".\" + 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 var createStyles = function (body, styles) {\n var document = body.ownerDocument;\n if (document) {\n var style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n };\n\n var PathType;\n (function (PathType) {\n PathType[PathType[\"VECTOR\"] = 0] = \"VECTOR\";\n PathType[PathType[\"BEZIER_CURVE\"] = 1] = \"BEZIER_CURVE\";\n })(PathType || (PathType = {}));\n var equalPath = function (a, b) {\n if (a.length === b.length) {\n return a.some(function (v, i) { return v === b[i]; });\n }\n return false;\n };\n var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n return path.map(function (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\n var Vector = /** @class */ (function () {\n function Vector(x, y) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n Vector.prototype.add = function (deltaX, deltaY) {\n return new Vector(this.x + deltaX, this.y + deltaY);\n };\n return Vector;\n }());\n\n var lerp = function (a, b, t) {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n };\n var BezierCurve = /** @class */ (function () {\n function BezierCurve(start, startControl, endControl, end) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n BezierCurve.prototype.subdivide = function (t, firstHalf) {\n var ab = lerp(this.start, this.startControl, t);\n var bc = lerp(this.startControl, this.endControl, t);\n var cd = lerp(this.endControl, this.end, t);\n var abbc = lerp(ab, bc, t);\n var bccd = lerp(bc, cd, t);\n var dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n };\n BezierCurve.prototype.add = function (deltaX, deltaY) {\n return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n };\n BezierCurve.prototype.reverse = function () {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n };\n return BezierCurve;\n }());\n var isBezierCurve = function (path) { return path.type === PathType.BEZIER_CURVE; };\n\n var BoundCurves = /** @class */ (function () {\n function BoundCurves(element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\n var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\n var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\n var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\n var 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 var maxFactor = Math.max.apply(Math, factors);\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 var topWidth = bounds.width - trh;\n var rightHeight = bounds.height - brv;\n var bottomWidth = bounds.width - brh;\n var leftHeight = bounds.height - blv;\n var borderTopWidth = styles.borderTopWidth;\n var borderRightWidth = styles.borderRightWidth;\n var borderBottomWidth = styles.borderBottomWidth;\n var borderLeftWidth = styles.borderLeftWidth;\n var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\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(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderLeftWidth ? 0 : trh - borderLeftWidth, trv - borderTopWidth, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth), Math.max(0, brh - borderRightWidth), brv - borderBottomWidth, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + leftHeight, Math.max(0, blh - borderLeftWidth), blv - borderBottomWidth, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n }\n return BoundCurves;\n }());\n var CORNER;\n (function (CORNER) {\n CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n })(CORNER || (CORNER = {}));\n var getCurvePoints = function (x, y, r1, r2, position) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = r1 * kappa; // control point offset horizontal\n var oy = r2 * kappa; // control point offset vertical\n var xm = x + r1; // x-middle\n var ym = y + r2; // y-middle\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n case CORNER.TOP_RIGHT:\n return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n }\n };\n var calculateBorderBoxPath = function (curves) {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n };\n var calculateContentBoxPath = function (curves) {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n };\n var calculatePaddingBoxPath = function (curves) {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n };\n\n var TransformEffect = /** @class */ (function () {\n function TransformEffect(offsetX, offsetY, matrix) {\n this.type = 0 /* TRANSFORM */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.matrix = matrix;\n }\n return TransformEffect;\n }());\n var ClipEffect = /** @class */ (function () {\n function ClipEffect(path, target) {\n this.type = 1 /* CLIP */;\n this.target = target;\n this.path = path;\n }\n return ClipEffect;\n }());\n var OpacityEffect = /** @class */ (function () {\n function OpacityEffect(opacity) {\n this.type = 2 /* OPACITY */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n this.opacity = opacity;\n }\n return OpacityEffect;\n }());\n var isTransformEffect = function (effect) {\n return effect.type === 0 /* TRANSFORM */;\n };\n var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\n var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\n\n var StackingContext = /** @class */ (function () {\n function StackingContext(container) {\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 return StackingContext;\n }());\n var ElementPaint = /** @class */ (function () {\n function ElementPaint(element, parentStack) {\n this.container = element;\n this.effects = parentStack.slice(0);\n this.curves = new BoundCurves(element);\n if (element.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(element.styles.opacity));\n }\n if (element.styles.transform !== null) {\n var offsetX = element.bounds.left + element.styles.transformOrigin[0].number;\n var offsetY = element.bounds.top + element.styles.transformOrigin[1].number;\n var matrix = element.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n if (element.styles.overflowX !== OVERFLOW.VISIBLE) {\n var borderBox = calculateBorderBoxPath(this.curves);\n var paddingBox = calculatePaddingBoxPath(this.curves);\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n else {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n }\n }\n }\n ElementPaint.prototype.getParentEffects = function () {\n var effects = this.effects.slice(0);\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n var borderBox = calculateBorderBoxPath(this.curves);\n var paddingBox = calculatePaddingBoxPath(this.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.push(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n }\n return effects;\n };\n return ElementPaint;\n }());\n var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n parent.container.elements.forEach(function (child) {\n var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n var paintContainer = new ElementPaint(child, parent.getParentEffects());\n if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n listItems.push(paintContainer);\n }\n var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n if (treatAsRealStackingContext || createsStackingContext) {\n var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n var stack = new StackingContext(paintContainer);\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n var order_1 = child.styles.zIndex.order;\n if (order_1 < 0) {\n var index_1 = 0;\n parentStack.negativeZIndex.some(function (current, i) {\n if (order_1 > current.element.container.styles.zIndex.order) {\n index_1 = i;\n return false;\n }\n else if (index_1 > 0) {\n return true;\n }\n return false;\n });\n parentStack.negativeZIndex.splice(index_1, 0, stack);\n }\n else if (order_1 > 0) {\n var index_2 = 0;\n parentStack.positiveZIndex.some(function (current, i) {\n if (order_1 >= current.element.container.styles.zIndex.order) {\n index_2 = i + 1;\n return false;\n }\n else if (index_2 > 0) {\n return true;\n }\n return false;\n });\n parentStack.positiveZIndex.splice(index_2, 0, stack);\n }\n else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n }\n else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n }\n else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n }\n else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n }\n else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n processListItems(child, listOwnerItems);\n }\n });\n };\n var processListItems = function (owner, elements) {\n var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (var i = 0; i < elements.length; i++) {\n var item = elements[i];\n if (item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0) {\n numbering = item.container.value;\n }\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n numbering += reversed ? -1 : 1;\n }\n };\n var parseStackingContexts = function (container) {\n var paintContainer = new ElementPaint(container, []);\n var root = new StackingContext(paintContainer);\n var listItems = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n };\n\n var parsePathForBorder = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n }\n };\n var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n var path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n }\n else {\n path.push(outer1);\n }\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n }\n else {\n path.push(outer2);\n }\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n }\n else {\n path.push(inner2);\n }\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n }\n else {\n path.push(inner1);\n }\n return path;\n };\n\n var paddingBox = function (element) {\n var bounds = element.bounds;\n var styles = element.styles;\n return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n };\n var contentBox = function (element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n };\n\n var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n if (backgroundOrigin === 0 /* BORDER_BOX */) {\n return element.bounds;\n }\n if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundPaintingArea = function (backgroundClip, element) {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundRendering = function (container, index, intrinsicSize) {\n var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\n var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n };\n var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\n var hasIntrinsicValue = function (value) { return typeof value === 'number'; };\n var calculateBackgroundSize = function (size, _a, bounds) {\n var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\n var first = size[0], second = size[1];\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n var targetRatio = bounds.width / bounds.height;\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n return [bounds.width, bounds.height];\n }\n var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\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, intrinsicHeight];\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 if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\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 // 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 var width_1 = hasIntrinsicWidth\n ? intrinsicWidth\n : intrinsicHeight * intrinsicProportion;\n var height_1 = hasIntrinsicHeight\n ? intrinsicHeight\n : intrinsicWidth / intrinsicProportion;\n return [width_1, height_1];\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 var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n return [width_2, height_2];\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 var width_3 = 0;\n var height_3 = 0;\n if (isLengthPercentage(first)) {\n width_3 = getAbsoluteValue(first, bounds.width);\n }\n else if (isLengthPercentage(second)) {\n height_3 = getAbsoluteValue(second, bounds.height);\n }\n if (isAuto(first)) {\n width_3 = height_3 * intrinsicProportion;\n }\n else if (!second || isAuto(second)) {\n height_3 = width_3 / intrinsicProportion;\n }\n return [width_3, height_3];\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 var width = null;\n var height = null;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n }\n else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / intrinsicWidth) * intrinsicHeight\n : bounds.height;\n }\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / intrinsicHeight) * intrinsicWidth\n : bounds.width;\n }\n if (width !== null && height !== null) {\n return [width, height];\n }\n throw new Error(\"Unable to calculate background-size for element\");\n };\n var getBackgroundValueForIndex = function (values, index) {\n var value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n return value;\n };\n var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n var x = _a[0], y = _a[1];\n var width = _b[0], height = _b[1];\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(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\n ];\n }\n };\n\n var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n var SAMPLE_TEXT = 'Hidden Text';\n var FontMetrics = /** @class */ (function () {\n function FontMetrics(document) {\n this._data = {};\n this._document = document;\n }\n FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n var container = this._document.createElement('div');\n var img = this._document.createElement('img');\n var span = this._document.createElement('span');\n var body = this._document.body;\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 body.appendChild(container);\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n var baseline = img.offsetTop - span.offsetTop + 2;\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n var middle = img.offsetTop - container.offsetTop + 2;\n body.removeChild(container);\n return { baseline: baseline, middle: middle };\n };\n FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n var key = fontFamily + \" \" + fontSize;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n return this._data[key];\n };\n return FontMetrics;\n }());\n\n var MASK_OFFSET = 10000;\n var CanvasRenderer = /** @class */ (function () {\n function CanvasRenderer(options) {\n this._activeEffects = [];\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d');\n this.options = options;\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.scrollX, -options.y + options.scrollY);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n Logger.getInstance(options.id).debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n }\n CanvasRenderer.prototype.applyEffects = function (effects, target) {\n var _this = this;\n while (this._activeEffects.length) {\n this.popEffect();\n }\n effects.filter(function (effect) { return contains(effect.target, target); }).forEach(function (effect) { return _this.applyEffect(effect); });\n };\n CanvasRenderer.prototype.applyEffect = function (effect) {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n this._activeEffects.push(effect);\n };\n CanvasRenderer.prototype.popEffect = function () {\n this._activeEffects.pop();\n this.ctx.restore();\n };\n CanvasRenderer.prototype.renderStack = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var styles;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n styles = stack.element.container.styles;\n if (!styles.isVisible()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.renderStackContent(stack)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderNode = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.renderNodeContent(paint)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing) {\n var _this = this;\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n }\n else {\n var letters = toCodePoints(text.text).map(function (i) { return fromCodePoint(i); });\n letters.reduce(function (left, letter) {\n _this.ctx.fillText(letter, left, text.bounds.top + text.bounds.height);\n return left + _this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n };\n CanvasRenderer.prototype.createFontStyle = function (styles) {\n var fontVariant = styles.fontVariant\n .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\n .join('');\n var fontFamily = styles.fontFamily.join(', ');\n var fontSize = isDimensionToken(styles.fontSize)\n ? \"\" + styles.fontSize.number + styles.fontSize.unit\n : styles.fontSize.number + \"px\";\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n };\n CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, font, fontFamily, fontSize;\n var _this = this;\n return __generator(this, function (_b) {\n _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n this.ctx.font = font;\n text.textBounds.forEach(function (text) {\n _this.ctx.fillStyle = asString(styles.color);\n _this.renderTextWithLetterSpacing(text, styles.letterSpacing);\n var textShadows = styles.textShadow;\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach(function (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 _this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n });\n _this.ctx.shadowColor = '';\n _this.ctx.shadowOffsetX = 0;\n _this.ctx.shadowOffsetY = 0;\n _this.ctx.shadowBlur = 0;\n }\n if (styles.textDecorationLine.length) {\n _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach(function (textDecorationLine) {\n switch (textDecorationLine) {\n case 1 /* 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 var baseline = _this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n break;\n case 2 /* OVERLINE */:\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n break;\n case 3 /* LINE_THROUGH */:\n // TODO try and find exact position for line-through\n var middle = _this.fontMetrics.getMetrics(fontFamily, fontSize).middle;\n _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n break;\n }\n });\n }\n });\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n var box = contentBox(container);\n var path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n this.ctx.restore();\n }\n };\n CanvasRenderer.prototype.renderNodeContent = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var container, curves, styles, _i, _a, child, image, e_1, image, e_2, iframeRenderer, canvas, size, bounds, x, textBounds, img, image, url, e_3, bounds;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.applyEffects(paint.effects, 4 /* CONTENT */);\n container = paint.container;\n curves = paint.curves;\n styles = container.styles;\n _i = 0, _a = container.textNodes;\n _b.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n child = _a[_i];\n return [4 /*yield*/, this.renderTextNode(child, styles)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n _b.label = 5;\n case 5:\n _b.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.options.cache.match(container.src)];\n case 6:\n image = _b.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 8];\n case 7:\n e_1 = _b.sent();\n Logger.getInstance(this.options.id).error(\"Error loading image \" + container.src);\n return [3 /*break*/, 8];\n case 8:\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n _b.label = 9;\n case 9:\n _b.trys.push([9, 11, , 12]);\n return [4 /*yield*/, this.options.cache.match(container.svg)];\n case 10:\n image = _b.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 12];\n case 11:\n e_2 = _b.sent();\n Logger.getInstance(this.options.id).error(\"Error loading svg \" + container.svg.substring(0, 255));\n return [3 /*break*/, 12];\n case 12:\n if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n iframeRenderer = new CanvasRenderer({\n id: this.options.id,\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n scrollX: 0,\n scrollY: 0,\n width: container.width,\n height: container.height,\n cache: this.options.cache,\n windowWidth: container.width,\n windowHeight: container.height\n });\n return [4 /*yield*/, iframeRenderer.render(container.tree)];\n case 13:\n canvas = _b.sent();\n if (container.width && container.height) {\n this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n }\n _b.label = 14;\n case 14:\n if (container instanceof InputElementContainer) {\n size = Math.min(container.bounds.width, container.bounds.height);\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 this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n if (isTextInputElement(container) && container.value.length) {\n this.ctx.font = this.createFontStyle(styles)[0];\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n bounds = contentBox(container);\n x = 0;\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 textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\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 this.ctx.clip();\n this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing);\n this.ctx.restore();\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n img = container.styles.listStyleImage;\n if (!(img.type === CSSImageType.URL)) return [3 /*break*/, 18];\n image = void 0;\n url = img.url;\n _b.label = 15;\n case 15:\n _b.trys.push([15, 17, , 18]);\n return [4 /*yield*/, this.options.cache.match(url)];\n case 16:\n image = _b.sent();\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n return [3 /*break*/, 18];\n case 17:\n e_3 = _b.sent();\n Logger.getInstance(this.options.id).error(\"Error loading list-style-image \" + url);\n return [3 /*break*/, 18];\n case 18: return [3 /*break*/, 20];\n case 19:\n if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n this.ctx.font = this.createFontStyle(styles)[0];\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);\n this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing);\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n _b.label = 20;\n case 20: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderStackContent = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n return __generator(this, function (_p) {\n switch (_p.label) {\n case 0: \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 return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n case 1:\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 _p.sent();\n _i = 0, _a = stack.negativeZIndex;\n _p.label = 2;\n case 2:\n if (!(_i < _a.length)) return [3 /*break*/, 5];\n child = _a[_i];\n return [4 /*yield*/, this.renderStack(child)];\n case 3:\n _p.sent();\n _p.label = 4;\n case 4:\n _i++;\n return [3 /*break*/, 2];\n case 5: \n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n return [4 /*yield*/, this.renderNodeContent(stack.element)];\n case 6:\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n _p.sent();\n _b = 0, _c = stack.nonInlineLevel;\n _p.label = 7;\n case 7:\n if (!(_b < _c.length)) return [3 /*break*/, 10];\n child = _c[_b];\n return [4 /*yield*/, this.renderNode(child)];\n case 8:\n _p.sent();\n _p.label = 9;\n case 9:\n _b++;\n return [3 /*break*/, 7];\n case 10:\n _d = 0, _e = stack.nonPositionedFloats;\n _p.label = 11;\n case 11:\n if (!(_d < _e.length)) return [3 /*break*/, 14];\n child = _e[_d];\n return [4 /*yield*/, this.renderStack(child)];\n case 12:\n _p.sent();\n _p.label = 13;\n case 13:\n _d++;\n return [3 /*break*/, 11];\n case 14:\n _f = 0, _g = stack.nonPositionedInlineLevel;\n _p.label = 15;\n case 15:\n if (!(_f < _g.length)) return [3 /*break*/, 18];\n child = _g[_f];\n return [4 /*yield*/, this.renderStack(child)];\n case 16:\n _p.sent();\n _p.label = 17;\n case 17:\n _f++;\n return [3 /*break*/, 15];\n case 18:\n _h = 0, _j = stack.inlineLevel;\n _p.label = 19;\n case 19:\n if (!(_h < _j.length)) return [3 /*break*/, 22];\n child = _j[_h];\n return [4 /*yield*/, this.renderNode(child)];\n case 20:\n _p.sent();\n _p.label = 21;\n case 21:\n _h++;\n return [3 /*break*/, 19];\n case 22:\n _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n _p.label = 23;\n case 23:\n if (!(_k < _l.length)) return [3 /*break*/, 26];\n child = _l[_k];\n return [4 /*yield*/, this.renderStack(child)];\n case 24:\n _p.sent();\n _p.label = 25;\n case 25:\n _k++;\n return [3 /*break*/, 23];\n case 26:\n _m = 0, _o = stack.positiveZIndex;\n _p.label = 27;\n case 27:\n if (!(_m < _o.length)) return [3 /*break*/, 30];\n child = _o[_m];\n return [4 /*yield*/, this.renderStack(child)];\n case 28:\n _p.sent();\n _p.label = 29;\n case 29:\n _m++;\n return [3 /*break*/, 27];\n case 30: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.mask = function (paths) {\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 CanvasRenderer.prototype.path = function (paths) {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n };\n CanvasRenderer.prototype.formatPath = function (paths) {\n var _this = this;\n paths.forEach(function (point, index) {\n var start = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n _this.ctx.moveTo(start.x, start.y);\n }\n else {\n _this.ctx.lineTo(start.x, start.y);\n }\n if (isBezierCurve(point)) {\n _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n }\n });\n };\n CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\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 CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n if (image.width === width && image.height === height) {\n return image;\n }\n var canvas = this.canvas.ownerDocument.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n };\n CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n return __awaiter(this, void 0, void 0, function () {\n var index, _loop_1, this_1, _i, _a, backgroundImage;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = container.styles.backgroundImage.length - 1;\n _loop_1 = function (backgroundImage) {\n var image, url, e_4, _a, path, x, y, width, height, pattern, _b, path, x, y, width, height, _c, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _d, path, left, top_1, width, height, position, x, y, _e, rx, ry, radialGradient_1, midX, midY, f, invF;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!(backgroundImage.type === CSSImageType.URL)) return [3 /*break*/, 5];\n image = void 0;\n url = backgroundImage.url;\n _f.label = 1;\n case 1:\n _f.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this_1.options.cache.match(url)];\n case 2:\n image = _f.sent();\n return [3 /*break*/, 4];\n case 3:\n e_4 = _f.sent();\n Logger.getInstance(this_1.options.id).error(\"Error loading background-image \" + url);\n return [3 /*break*/, 4];\n case 4:\n if (image) {\n _a = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]), path = _a[0], x = _a[1], y = _a[2], width = _a[3], height = _a[4];\n pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n return [3 /*break*/, 6];\n case 5:\n if (isLinearGradient(backgroundImage)) {\n _b = calculateBackgroundRendering(container, index, [null, null, null]), path = _b[0], x = _b[1], y = _b[2], width = _b[3], height = _b[4];\n _c = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _c[0], x0 = _c[1], x1 = _c[2], y0 = _c[3], y1 = _c[4];\n canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n ctx = canvas.getContext('2d');\n gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n ctx.fillStyle = gradient_1;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n pattern = this_1.ctx.createPattern(canvas, 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n }\n else if (isRadialGradient(backgroundImage)) {\n _d = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]), path = _d[0], left = _d[1], top_1 = _d[2], width = _d[3], height = _d[4];\n position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n x = getAbsoluteValue(position[0], width);\n y = getAbsoluteValue(position[position.length - 1], height);\n _e = calculateRadius(backgroundImage, x, y, width, height), rx = _e[0], ry = _e[1];\n if (rx > 0 && rx > 0) {\n radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n this_1.path(path);\n this_1.ctx.fillStyle = radialGradient_1;\n if (rx !== ry) {\n midX = container.bounds.left + 0.5 * container.bounds.width;\n midY = container.bounds.top + 0.5 * container.bounds.height;\n f = ry / rx;\n invF = 1 / f;\n this_1.ctx.save();\n this_1.ctx.translate(midX, midY);\n this_1.ctx.transform(1, 0, 0, f, 0, 0);\n this_1.ctx.translate(-midX, -midY);\n this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n this_1.ctx.restore();\n }\n else {\n this_1.ctx.fill();\n }\n }\n }\n _f.label = 6;\n case 6:\n index--;\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n _b.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n backgroundImage = _a[_i];\n return [5 /*yield**/, _loop_1(backgroundImage)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderBorder = function (color, side, curvePoints) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.applyEffects(paint.effects, 2 /* BACKGROUND_BORDERS */);\n styles = paint.container.styles;\n hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor },\n { style: styles.borderRightStyle, color: styles.borderRightColor },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor }\n ];\n backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n case 1:\n _a.sent();\n this.ctx.restore();\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach(function (shadow) {\n _this.ctx.save();\n var borderBoxArea = calculateBorderBoxPath(paint.curves);\n var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));\n if (shadow.inset) {\n _this.path(borderBoxArea);\n _this.ctx.clip();\n _this.mask(shadowPaintingArea);\n }\n else {\n _this.mask(borderBoxArea);\n _this.ctx.clip();\n _this.path(shadowPaintingArea);\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 _this.ctx.fill();\n _this.ctx.restore();\n });\n _a.label = 2;\n case 2:\n side = 0;\n _i = 0, borders_1 = borders;\n _a.label = 3;\n case 3:\n if (!(_i < borders_1.length)) return [3 /*break*/, 7];\n border = borders_1[_i];\n if (!(border.style !== BORDER_STYLE.NONE && !isTransparent(border.color))) return [3 /*break*/, 5];\n return [4 /*yield*/, this.renderBorder(border.color, side, paint.curves)];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5:\n side++;\n _a.label = 6;\n case 6:\n _i++;\n return [3 /*break*/, 3];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var stack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x - this.options.scrollX, this.options.y - this.options.scrollY, this.options.width, this.options.height);\n }\n stack = parseStackingContexts(element);\n return [4 /*yield*/, this.renderStack(stack)];\n case 1:\n _a.sent();\n this.applyEffects([], 2 /* BACKGROUND_BORDERS */);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return CanvasRenderer;\n }());\n var isTextInputElement = function (container) {\n if (container instanceof TextareaElementContainer) {\n return true;\n }\n else if (container instanceof SelectElementContainer) {\n return true;\n }\n else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n };\n var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\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 var canvasTextAlign = function (textAlign) {\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 var ForeignObjectRenderer = /** @class */ (function () {\n function ForeignObjectRenderer(options) {\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d');\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 this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY);\n Logger.getInstance(options.id).debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n }\n ForeignObjectRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var svg, img;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n svg = createForeignObjectSVG(Math.max(this.options.windowWidth, this.options.width) * this.options.scale, Math.max(this.options.windowHeight, this.options.height) * this.options.scale, this.options.scrollX * this.options.scale, this.options.scrollY * this.options.scale, element);\n return [4 /*yield*/, loadSerializedSVG$1(svg)];\n case 1:\n img = _a.sent();\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 this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return ForeignObjectRenderer;\n }());\n var loadSerializedSVG$1 = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n var _this = undefined;\n var parseColor$1 = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };\n var html2canvas = function (element, options) {\n if (options === void 0) { options = {}; }\n return renderElement(element, options);\n };\n if (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n }\n var renderElement = function (element, opts) { return __awaiter(_this, void 0, void 0, function () {\n var ownerDocument, defaultView, instanceName, _a, width, height, left, top, defaultResourceOptions, resourceOptions, defaultOptions, options, windowBounds, documentCloner, clonedElement, container, documentBackgroundColor, bodyBackgroundColor, bgColor, defaultBackgroundColor, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n throw new Error(\"Element is not attached to a Document\");\n }\n defaultView = ownerDocument.defaultView;\n if (!defaultView) {\n throw new Error(\"Document is not attached to a Window\");\n }\n instanceName = (Math.round(Math.random() * 1000) + Date.now()).toString(16);\n _a = isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n defaultResourceOptions = {\n allowTaint: false,\n imageTimeout: 15000,\n proxy: undefined,\n useCORS: false\n };\n resourceOptions = __assign({}, defaultResourceOptions, opts);\n defaultOptions = {\n backgroundColor: '#ffffff',\n cache: opts.cache ? opts.cache : CacheStorage.create(instanceName, resourceOptions),\n logging: true,\n removeContainer: true,\n foreignObjectRendering: false,\n scale: defaultView.devicePixelRatio || 1,\n windowWidth: defaultView.innerWidth,\n windowHeight: defaultView.innerHeight,\n scrollX: defaultView.pageXOffset,\n scrollY: defaultView.pageYOffset,\n x: left,\n y: top,\n width: Math.ceil(width),\n height: Math.ceil(height),\n id: instanceName\n };\n options = __assign({}, defaultOptions, resourceOptions, opts);\n windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);\n Logger.create({ id: instanceName, enabled: options.logging });\n Logger.getInstance(instanceName).debug(\"Starting document clone\");\n documentCloner = new DocumentCloner(element, {\n id: instanceName,\n onclone: options.onclone,\n ignoreElements: options.ignoreElements,\n inlineImages: options.foreignObjectRendering,\n copyStyles: options.foreignObjectRendering\n });\n clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n }\n return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n case 1:\n container = _b.sent();\n documentBackgroundColor = ownerDocument.documentElement\n ? parseColor$1(getComputedStyle(ownerDocument.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n bodyBackgroundColor = ownerDocument.body\n ? parseColor$1(getComputedStyle(ownerDocument.body).backgroundColor)\n : COLORS.TRANSPARENT;\n bgColor = opts.backgroundColor;\n defaultBackgroundColor = typeof bgColor === 'string' ? parseColor$1(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff;\n backgroundColor = element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n renderOptions = {\n id: instanceName,\n cache: options.cache,\n canvas: options.canvas,\n backgroundColor: backgroundColor,\n scale: options.scale,\n x: options.x,\n y: options.y,\n scrollX: options.scrollX,\n scrollY: options.scrollY,\n width: options.width,\n height: options.height,\n windowWidth: options.windowWidth,\n windowHeight: options.windowHeight\n };\n if (!options.foreignObjectRendering) return [3 /*break*/, 3];\n Logger.getInstance(instanceName).debug(\"Document cloned, using foreign object rendering\");\n renderer = new ForeignObjectRenderer(renderOptions);\n return [4 /*yield*/, renderer.render(clonedElement)];\n case 2:\n canvas = _b.sent();\n return [3 /*break*/, 5];\n case 3:\n Logger.getInstance(instanceName).debug(\"Document cloned, using computed rendering\");\n CacheStorage.attachInstance(options.cache);\n Logger.getInstance(instanceName).debug(\"Starting DOM parsing\");\n root = parseTree(clonedElement);\n CacheStorage.detachInstance();\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n Logger.getInstance(instanceName).debug(\"Starting renderer\");\n renderer = new CanvasRenderer(renderOptions);\n return [4 /*yield*/, renderer.render(root)];\n case 4:\n canvas = _b.sent();\n _b.label = 5;\n case 5:\n if (options.removeContainer === true) {\n if (!DocumentCloner.destroy(container)) {\n Logger.getInstance(instanceName).error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n }\n }\n Logger.getInstance(instanceName).debug(\"Finished rendering\");\n Logger.destroy(instanceName);\n CacheStorage.destroy(instanceName);\n return [2 /*return*/, canvas];\n }\n });\n }); };\n\n return html2canvas;\n\n}));\n//# sourceMappingURL=html2canvas.js.map\n","/**\n * html2Json 改造来自: https://github.com/Jxck/html2json\n *\n *\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n * 垂直微信小程序开发交流社区\n *\n * github地址: https://github.com/icindy/wxParse\n *\n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\nimport wxDiscode from './wxDiscode';\nimport HTMLParser from './htmlparser';\n\nfunction makeMap(str) {\n const obj = {};\n const items = str.split(',');\n for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;\n return obj;\n}\n\n// Block Elements - HTML 5\nconst block = makeMap('br,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');\n\n// Inline Elements - HTML 5\nconst inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nconst closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');\n\nfunction removeDOCTYPE(html) {\n const isDocument = /<body.*>([^]*)<\\/body>/.test(html);\n return isDocument ? RegExp.$1 : html;\n}\n\nfunction trimHtml(html) {\n return html\n .replace(/<!--.*?-->/gi, '')\n .replace(/\\/\\*.*?\\*\\//gi, '')\n .replace(/[ ]+</gi, '<')\n .replace(/<script[^]*<\\/script>/gi, '')\n .replace(/<style[^]*<\\/style>/gi, '');\n}\n\nfunction getScreenInfo() {\n const screen = {};\n uni.getSystemInfo({\n success: (res) => {\n screen.width = res.windowWidth;\n screen.height = res.windowHeight;\n },\n });\n return screen;\n}\n\nfunction html2json(html, customHandler, imageProp, host) {\n // 处理字符串\n html = removeDOCTYPE(html);\n html = trimHtml(html);\n html = wxDiscode.strDiscode(html);\n // 生成node节点\n const bufArray = [];\n const results = {\n nodes: [],\n imageUrls: [],\n };\n\n\tconst screen = getScreenInfo();\n function Node(tag) {\n this.node = 'element';\n this.tag = tag;\n\t\t\n\t\tthis.$screen = screen;\n }\n\n HTMLParser(html, {\n start(tag, attrs, unary) {\n // node for this element\n const node = new Node(tag);\n\n if (bufArray.length !== 0) {\n const parent = bufArray[0];\n if (parent.nodes === undefined) {\n parent.nodes = [];\n }\n }\n\n if (block[tag]) {\n node.tagType = 'block';\n } else if (inline[tag]) {\n node.tagType = 'inline';\n } else if (closeSelf[tag]) {\n node.tagType = 'closeSelf';\n }\n\n node.attr = attrs.reduce((pre, attr) => {\n const { name } = attr;\n let { value } = attr;\n if (name === 'class') {\n node.classStr = value;\n }\n // has multi attibutes\n // make it array of attribute\n if (name === 'style') {\n node.styleStr = value;\n }\n if (value.match(/ /)) {\n value = value.split(' ');\n }\n\n // if attr already exists\n // merge it\n if (pre[name]) {\n if (Array.isArray(pre[name])) {\n // already array, push to last\n pre[name].push(value);\n } else {\n // single value, make it array\n pre[name] = [pre[name], value];\n }\n } else {\n // not exist, put it\n pre[name] = value;\n }\n\n return pre;\n }, {});\n\n // 优化样式相关属性\n if (node.classStr) {\n node.classStr += ` ${node.tag}`;\n } else {\n node.classStr = node.tag;\n }\n if (node.tagType === 'inline') {\n node.classStr += ' inline';\n }\n\n // 对img添加额外数据\n if (node.tag === 'img') {\n let imgUrl = node.attr.src;\n imgUrl = wxDiscode.urlToHttpUrl(imgUrl, imageProp.domain);\n Object.assign(node.attr, imageProp, {\n src: imgUrl || '',\n });\n if (imgUrl) {\n results.imageUrls.push(imgUrl);\n }\n }\n\n // 处理a标签属性\n if (node.tag === 'a') {\n node.attr.href = node.attr.href || '';\n }\n\n // 处理font标签样式属性\n if (node.tag === 'font') {\n const fontSize = [\n 'x-small',\n 'small',\n 'medium',\n 'large',\n 'x-large',\n 'xx-large',\n '-webkit-xxx-large',\n ];\n const styleAttrs = {\n color: 'color',\n face: 'font-family',\n size: 'font-size',\n };\n if (!node.styleStr) node.styleStr = '';\n Object.keys(styleAttrs).forEach((key) => {\n if (node.attr[key]) {\n const value = key === 'size' ? fontSize[node.attr[key] - 1] : node.attr[key];\n node.styleStr += `${styleAttrs[key]}: ${value};`;\n }\n });\n }\n\n // 临时记录source资源\n if (node.tag === 'source') {\n results.source = node.attr.src;\n }\n\n if (customHandler.start) {\n customHandler.start(node, results);\n }\n\n if (unary) {\n // if this tag doesn't have end tag\n // like <img src=\"hoge.png\"/>\n // add to parents\n const parent = bufArray[0] || results;\n if (parent.nodes === undefined) {\n parent.nodes = [];\n }\n parent.nodes.push(node);\n } else {\n bufArray.unshift(node);\n }\n },\n end(tag) {\n // merge into parent tag\n const node = bufArray.shift();\n if (node.tag !== tag) {\n console.error('invalid state: mismatch end tag');\n }\n\n // 当有缓存source资源时于于video补上src资源\n if (node.tag === 'video' && results.source) {\n node.attr.src = results.source;\n delete results.source;\n }\n\n if (customHandler.end) {\n customHandler.end(node, results);\n }\n\n if (bufArray.length === 0) {\n results.nodes.push(node);\n } else {\n const parent = bufArray[0];\n if (!parent.nodes) {\n parent.nodes = [];\n }\n parent.nodes.push(node);\n }\n },\n chars(text) {\n if (!text.trim()) return;\n\n const node = {\n node: 'text',\n text,\n };\n\n if (customHandler.chars) {\n customHandler.chars(node, results);\n }\n\n if (bufArray.length === 0) {\n results.nodes.push(node);\n } else {\n const parent = bufArray[0];\n if (parent.nodes === undefined) {\n parent.nodes = [];\n }\n parent.nodes.push(node);\n }\n },\n });\n\n return results;\n}\n\nexport default html2json;\n","// HTML 支持的数学符号\nfunction strNumDiscode(str) {\n str = str.replace(/&forall;/g, '∀');\n str = str.replace(/&part;/g, '∂');\n str = str.replace(/&exist;/g, '∃');\n str = str.replace(/&empty;/g, '∅');\n str = str.replace(/&nabla;/g, '∇');\n str = str.replace(/&isin;/g, '∈');\n str = str.replace(/&notin;/g, '∉');\n str = str.replace(/&ni;/g, '∋');\n str = str.replace(/&prod;/g, '∏');\n str = str.replace(/&sum;/g, '∑');\n str = str.replace(/&minus;/g, '−');\n str = str.replace(/&lowast;/g, '∗');\n str = str.replace(/&radic;/g, '√');\n str = str.replace(/&prop;/g, '∝');\n str = str.replace(/&infin;/g, '∞');\n str = str.replace(/&ang;/g, '∠');\n str = str.replace(/&and;/g, '∧');\n str = str.replace(/&or;/g, '∨');\n str = str.replace(/&cap;/g, '∩');\n str = str.replace(/&cup;/g, '∪');\n str = str.replace(/&int;/g, '∫');\n str = str.replace(/&there4;/g, '∴');\n str = str.replace(/&sim;/g, '∼');\n str = str.replace(/&cong;/g, '≅');\n str = str.replace(/&asymp;/g, '≈');\n str = str.replace(/&ne;/g, '≠');\n str = str.replace(/&le;/g, '≤');\n str = str.replace(/&ge;/g, '≥');\n str = str.replace(/&sub;/g, '⊂');\n str = str.replace(/&sup;/g, '⊃');\n str = str.replace(/&nsub;/g, '⊄');\n str = str.replace(/&sube;/g, '⊆');\n str = str.replace(/&supe;/g, '⊇');\n str = str.replace(/&oplus;/g, '⊕');\n str = str.replace(/&otimes;/g, '⊗');\n str = str.replace(/&perp;/g, '⊥');\n str = str.replace(/&sdot;/g, '⋅');\n return str;\n}\n\n// HTML 支持的希腊字母\nfunction strGreeceDiscode(str) {\n str = str.replace(/&Alpha;/g, 'Α');\n str = str.replace(/&Beta;/g, 'Β');\n str = str.replace(/&Gamma;/g, 'Γ');\n str = str.replace(/&Delta;/g, 'Δ');\n str = str.replace(/&Epsilon;/g, 'Ε');\n str = str.replace(/&Zeta;/g, 'Ζ');\n str = str.replace(/&Eta;/g, 'Η');\n str = str.replace(/&Theta;/g, 'Θ');\n str = str.replace(/&Iota;/g, 'Ι');\n str = str.replace(/&Kappa;/g, 'Κ');\n str = str.replace(/&Lambda;/g, 'Λ');\n str = str.replace(/&Mu;/g, 'Μ');\n str = str.replace(/&Nu;/g, 'Ν');\n str = str.replace(/&Xi;/g, 'Ν');\n str = str.replace(/&Omicron;/g, 'Ο');\n str = str.replace(/&Pi;/g, 'Π');\n str = str.replace(/&Rho;/g, 'Ρ');\n str = str.replace(/&Sigma;/g, 'Σ');\n str = str.replace(/&Tau;/g, 'Τ');\n str = str.replace(/&Upsilon;/g, 'Υ');\n str = str.replace(/&Phi;/g, 'Φ');\n str = str.replace(/&Chi;/g, 'Χ');\n str = str.replace(/&Psi;/g, 'Ψ');\n str = str.replace(/&Omega;/g, 'Ω');\n\n str = str.replace(/&alpha;/g, 'α');\n str = str.replace(/&beta;/g, 'β');\n str = str.replace(/&gamma;/g, 'γ');\n str = str.replace(/&delta;/g, 'δ');\n str = str.replace(/&epsilon;/g, 'ε');\n str = str.replace(/&zeta;/g, 'ζ');\n str = str.replace(/&eta;/g, 'η');\n str = str.replace(/&theta;/g, 'θ');\n str = str.replace(/&iota;/g, 'ι');\n str = str.replace(/&kappa;/g, 'κ');\n str = str.replace(/&lambda;/g, 'λ');\n str = str.replace(/&mu;/g, 'μ');\n str = str.replace(/&nu;/g, 'ν');\n str = str.replace(/&xi;/g, 'ξ');\n str = str.replace(/&omicron;/g, 'ο');\n str = str.replace(/&pi;/g, 'π');\n str = str.replace(/&rho;/g, 'ρ');\n str = str.replace(/&sigmaf;/g, 'ς');\n str = str.replace(/&sigma;/g, 'σ');\n str = str.replace(/&tau;/g, 'τ');\n str = str.replace(/&upsilon;/g, 'υ');\n str = str.replace(/&phi;/g, 'φ');\n str = str.replace(/&chi;/g, 'χ');\n str = str.replace(/&psi;/g, 'ψ');\n str = str.replace(/&omega;/g, 'ω');\n str = str.replace(/&thetasym;/g, 'ϑ');\n str = str.replace(/&upsih;/g, 'ϒ');\n str = str.replace(/&piv;/g, 'ϖ');\n str = str.replace(/&middot;/g, '·');\n return str;\n}\n\nfunction strcharacterDiscode(str) {\n // 加入常用解析\n str = str.replace(/&nbsp;/g, ' ');\n str = str.replace(/&ensp;/g, ' ');\n str = str.replace(/&emsp;/g, ' ');\n str = str.replace(/&quot;/g, \"'\");\n str = str.replace(/&amp;/g, '&');\n str = str.replace(/&lt;/g, '<');\n str = str.replace(/&gt;/g, '>');\n str = str.replace(/&#8226;/g, '•');\n\n return str;\n}\n\n// HTML 支持的其他实体\nfunction strOtherDiscode(str) {\n str = str.replace(/&OElig;/g, 'Œ');\n str = str.replace(/&oelig;/g, 'œ');\n str = str.replace(/&Scaron;/g, 'Š');\n str = str.replace(/&scaron;/g, 'š');\n str = str.replace(/&Yuml;/g, 'Ÿ');\n str = str.replace(/&fnof;/g, 'ƒ');\n str = str.replace(/&circ;/g, 'ˆ');\n str = str.replace(/&tilde;/g, '˜');\n str = str.replace(/&ensp;/g, '');\n str = str.replace(/&emsp;/g, '');\n str = str.replace(/&thinsp;/g, '');\n str = str.replace(/&zwnj;/g, '');\n str = str.replace(/&zwj;/g, '');\n str = str.replace(/&lrm;/g, '');\n str = str.replace(/&rlm;/g, '');\n str = str.replace(/&ndash;/g, '–');\n str = str.replace(/&mdash;/g, '—');\n str = str.replace(/&lsquo;/g, '‘');\n str = str.replace(/&rsquo;/g, '’');\n str = str.replace(/&sbquo;/g, '‚');\n str = str.replace(/&ldquo;/g, '“');\n str = str.replace(/&rdquo;/g, '”');\n str = str.replace(/&bdquo;/g, '„');\n str = str.replace(/&dagger;/g, '†');\n str = str.replace(/&Dagger;/g, '‡');\n str = str.replace(/&bull;/g, '•');\n str = str.replace(/&hellip;/g, '…');\n str = str.replace(/&permil;/g, '‰');\n str = str.replace(/&prime;/g, '′');\n str = str.replace(/&Prime;/g, '″');\n str = str.replace(/&lsaquo;/g, '‹');\n str = str.replace(/&rsaquo;/g, '›');\n str = str.replace(/&oline;/g, '‾');\n str = str.replace(/&euro;/g, '€');\n str = str.replace(/&trade;/g, '™');\n\n str = str.replace(/&larr;/g, '←');\n str = str.replace(/&uarr;/g, '↑');\n str = str.replace(/&rarr;/g, '→');\n str = str.replace(/&darr;/g, '↓');\n str = str.replace(/&harr;/g, '↔');\n str = str.replace(/&crarr;/g, '↵');\n str = str.replace(/&lceil;/g, '⌈');\n str = str.replace(/&rceil;/g, '⌉');\n\n str = str.replace(/&lfloor;/g, '⌊');\n str = str.replace(/&rfloor;/g, '⌋');\n str = str.replace(/&loz;/g, '◊');\n str = str.replace(/&spades;/g, '♠');\n str = str.replace(/&clubs;/g, '♣');\n str = str.replace(/&hearts;/g, '♥');\n\n str = str.replace(/&diams;/g, '♦');\n str = str.replace(/&#39;/g, \"'\");\n return str;\n}\n\nfunction strDiscode(str) {\n str = strNumDiscode(str);\n str = strGreeceDiscode(str);\n str = strcharacterDiscode(str);\n str = strOtherDiscode(str);\n return str;\n}\n\nfunction urlToHttpUrl(url, domain) {\n if (/^\\/\\//.test(url)) {\n return `https:${url}`;\n } else if (/^\\//.test(url)) {\n return `https://${domain}${url}`;\n }\n return url;\n}\n\nexport default {\n strDiscode,\n urlToHttpUrl,\n};\n","/**\n *\n * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser\n *\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n * 垂直微信小程序开发交流社区\n *\n * github地址: https://github.com/icindy/wxParse\n *\n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n// Regular Expressions for parsing tags and attributes\n\nconst startTag = /^<([-A-Za-z0-9_]+)((?:\\s+[a-zA-Z0-9_:][-a-zA-Z0-9_:.]*(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)>/;\nconst endTag = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nconst attr = /([a-zA-Z0-9_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n\nfunction makeMap(str) {\n const obj = {};\n const items = str.split(',');\n for (let i = 0; i < items.length; i += 1) obj[items[i]] = true;\n return obj;\n}\n\n// Empty Elements - HTML 5\nconst empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr');\n\n// Block Elements - HTML 5\nconst block = makeMap('address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video');\n\n// Inline Elements - HTML 5\nconst inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var');\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nconst closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');\n\n// Attributes that have their values filled in disabled=\"disabled\"\nconst fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected');\n\nfunction HTMLParser(html, handler) {\n let index;\n let chars;\n let match;\n let last = html;\n const stack = [];\n\n stack.last = () => stack[stack.length - 1];\n\n function parseEndTag(tag, tagName) {\n // If no tag name is provided, clean shop\n let pos;\n if (!tagName) {\n pos = 0;\n } else {\n // Find the closest opened tag of the same type\n tagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos -= 1) {\n if (stack[pos] === tagName) break;\n }\n }\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (let i = stack.length - 1; i >= pos; i -= 1) {\n if (handler.end) handler.end(stack[i]);\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n }\n }\n\n function parseStartTag(tag, tagName, rest, unary) {\n tagName = tagName.toLowerCase();\n\n if (block[tagName]) {\n while (stack.last() && inline[stack.last()]) {\n parseEndTag('', stack.last());\n }\n }\n\n if (closeSelf[tagName] && stack.last() === tagName) {\n parseEndTag('', tagName);\n }\n\n unary = empty[tagName] || !!unary;\n\n if (!unary) stack.push(tagName);\n\n if (handler.start) {\n const attrs = [];\n\n rest.replace(attr, function genAttr(matches, name) {\n const value = arguments[2] || arguments[3] || arguments[4] || (fillAttrs[name] ? name : '');\n\n attrs.push({\n name,\n value,\n escaped: value.replace(/(^|[^\\\\])\"/g, '$1\\\\\"'), // \"\n });\n });\n\n if (handler.start) {\n handler.start(tagName, attrs, unary);\n }\n }\n }\n\n while (html) {\n chars = true;\n\n if (html.indexOf('</') === 0) {\n match = html.match(endTag);\n\n if (match) {\n html = html.substring(match[0].length);\n match[0].replace(endTag, parseEndTag);\n chars = false;\n }\n\n // start tag\n } else if (html.indexOf('<') === 0) {\n match = html.match(startTag);\n\n if (match) {\n html = html.substring(match[0].length);\n match[0].replace(startTag, parseStartTag);\n chars = false;\n }\n }\n\n if (chars) {\n index = html.indexOf('<');\n let text = '';\n while (index === 0) {\n text += '<';\n html = html.substring(1);\n index = html.indexOf('<');\n }\n text += index < 0 ? html : html.substring(0, index);\n html = index < 0 ? '' : html.substring(index);\n\n if (handler.chars) handler.chars(text);\n }\n\n if (html === last) throw new Error(`Parse Error: ${html}`);\n last = html;\n }\n\n // Clean up any remaining tags\n parseEndTag();\n}\n\nexport default HTMLParser;\n"],"sourceRoot":""}