{"version":3,"sources":["webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/canvg/lib/index.es.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/rgbcolor/index.js","webpack:///./node_modules/stackblur-canvas/dist/stackblur-es.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/svg-pathdata/lib/SVGPathData.module.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js"],"names":["uncurryThis","toObject","floor","Math","charAt","replace","stringSlice","slice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","module","exports","matched","str","position","captures","namedCaptures","replacement","tailPos","length","m","symbols","undefined","match","ch","capture","n","f","offscreen","DOMParser","DOMParserFallback","arguments","preset","window","ignoreAnimation","ignoreMouse","width","height","OffscreenCanvas","url","response","fetch","blob","img","createImageBitmap","Reflect","deleteProperty","node","_ref","canvas","createCanvas","createImage","loadImage","index","Object","freeze","__proto__","compressSpaces","trimLeft","trimRight","toNumbers","matches","map","parseFloat","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","urlMatch","exec","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","String","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","join","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","value","this","isNormalizedColor","separator","getString","trim","split","zeroIsValue","regexp","result","isString","hasValue","asString","endsWith","def","rootEmSize","emSize","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","screen","getNumber","min","computeSize","max","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","len","commas","i","ok","alpha","toRGBA","ViewPort","viewPorts","push","pop","getCurrent","d","Point","x","y","point","defaultValue","scale","path","points","pathPoints","atan2","transform","xp","yp","Mouse","working","events","eventElements","onClick","bind","onMouseMove","onclick","onmousemove","style","cursor","forEach","run","parent","_ref2","isPointInPath","boundingBox","_ref3","isPointInBox","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","mapXY","clientX","clientY","type","eventTarget","defaultWindow","defaultFetch$1","Screen","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","checker","readyPromise","Promise","resolve","every","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","getPixels","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","now","Date","then","tick","shouldUpdate","runEvents","start","cancel","stop","reduce","animation","update","hasEvents","clear","setCurrent","widthStyle","getStyle","heightStyle","concat","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","isNaN","_heightStyle","transformStyle","clearRect","defaultFetch","DefaultDOMParser","Parser","resource","_this","parseFromString","load","xml","parser","checkDocument","err","parserError","getElementsByTagName","Error","textContent","_this2","text","Translate","parse","applyTransform","Rotate","rotate","transformOrigin","angle","originX","originY","cx","cy","numbers","tx","ty","getRadians","rad","cos","sin","Scale","scaleSize","parseScale","Matrix","matrix","a","b","c","e","g","h","det","Skew","skew","super","SkewX","tan","SkewY","parseTransforms","parseTransform","Transform","transforms","data","TransformType","transformTypes","transformOriginXProperty","transformOriginYProperty","apply","unapply","applyToPoint","skewX","skewY","Element","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","Array","from","attribute","nodeName","addStylesFromStyleDefinition","id","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","empty","key","skipAncestors","parentStyle","_style","save","mask","applyEffects","getValue","filter","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","child","createElement","ignoreChildTypes","includes","styleClasses","some","styleClass","matchesSelector","existingSpecificity","ignoreStyles","toRestore","styleProp","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","process","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","set","part","variants","weights","BoundingBox","x1","Number","NaN","y1","x2","y2","addPoint","p0","p1","p2","p3","forX","b2ac","t1","addX","sumCubic","addY","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","bezierCurveAdd","cp1x","cp1y","cp2x","cp2y","addBezierCurve","PathParser","control","current","command","commands","previousCommand","angles","xProp","yProp","makeAbsolute","getPoint","CURVE_TO","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ox","oy","relative","priorTo","angleTo","addMarkerAngle","j","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","toString","isPixels","globalAlpha","calculateOpacity","popEmSize","PathElement","pathParser","reset","isEnd","next","MOVE_TO","pathM","LINE_TO","pathL","HORIZ_LINE_TO","pathH","VERT_LINE_TO","pathV","pathC","pathS","pathQ","pathT","ARC","pathA","CLOSE_PATH","pathZ","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","fill","setTransform","stroke","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_marker","_point","_angle","_marker2","_point2","_angle2","getAsCurrentPoint","addMarker","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","r","sx","sy","arc","Boolean","GlyphElement","horizAdvX","unicode","arabicForm","TextElement","measureCache","textBaseline","getTextBaseline","dxAttr","dyAttr","getAnchorDelta","getTElementBoundingBox","initializeCoordinates","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","glyphs","maybeGlyph","missingGlyph","parentNode","indexOf","lastIndex","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","getGlyph","lw","fillText","strokeText","startI","textAnchor","measureTextRecursive","textParent","xAttr","yAttr","_width","adjustChildCoordinates","measure","measureTargetText","targetText","_measure","TSpanElement","getTextFromNode","TextNode","SVGElement","root","_this$node$parentNode","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","setViewBox","removeCurrent","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","getPoints","PolylineElement","parsePath","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","getContext","pattern","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","duration","initialValue","initialUnits","removed","frozen","begin","getMilliseconds","maxDuration","to","values","valuesAttr","attributeType","attributeName","progress","getProgress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","p","lb","ub","ceil","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontElement","fontFamilyStyle","FontFaceElement","ascent","descent","MissingGlyphElement","TRefElement","firstChild","AElement","hasText","open","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread$2","target","source","getOwnPropertyDescriptors","defineProperties","defineProperty","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","getLetterSpacingAt","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","nextOffset","findSegmentToFitChar","pathCommands","startX","startY","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","end","inc","abs","getPointOnEllipticalArc","dist","fromX","fromY","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","getPointOnLine","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","dataUriRegex","ImageElement","loaded","href","isSvg","images","loadSvg","image","console","error","atob","decodeURIComponent","svg","subDocument","canvg","forkString","documentElement","_image","complete","drawImage","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","srcs","src","UseElement","tempSvg","oldParent","cachedElement","imGet","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","_x","_y","srcData","getImageData","nr","ng","nb","na","putImageData","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","restoreStyles","noop","ClipPathElement","contextProto","getPrototypeOf","elementTransform","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","TitleElement","DescElement","elements","ownKeys$1","_objectSpread$1","_createImage","anonymousCrossOrigin","crossOrigin","reject","onload","onerror","_event","_source","_lineno","_colno","Document","emSizeStack","uniqueId","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","elementType","ElementType","elementTypes","config","ownKeys","_objectSpread","Canvg","options","createDocumentElement","_arguments","fromString","ready","_arguments2","baseOptions","resize","fails","global","$RegExp","RegExp","re","groups","call","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","getMethod","arraySlice","callRegExpExec","regexpExec","stickyHelpers","UNSUPPORTED_Y","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","maybeCallNative","internalSplit","limit","string","lim","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","O","splitter","S","res","done","C","unicodeMatching","q","A","z","$","$reduce","left","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","STRICT_METHOD","CHROME_BUG","proto","forced","callbackfn","isCallable","classof","TypeError","R","PROPER_FUNCTION_NAME","PROPER","redefine","isPrototypeOf","$toString","regExpFlags","TO_STRING","RegExpPrototype","prototype","n$ToString","getFlags","NOT_GENERIC","INCORRECT_NAME","rf","unsafe","isArray","un$Reverse","nextTick","fn","args","shift","setTimeout","platform","arch","execPath","title","pid","browser","env","argv","binding","cwd","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","regExpExec","MATCH","nativeMatch","matcher","fullUnicode","matchStr","$trim","forcedStringTrimMethod","toIntegerOrInfinity","getSubstitution","wellKnownSymbol","REPLACE","stringIndexOf","maybeToString","it","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","nativeReplace","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","color_string","simple_colors","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","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","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","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","bits","parseInt","processor","channels","toRGB","toHex","getHelpXML","examples","sc","setAttribute","list_item","list_color","RGBColor","example_div","cssText","list_item_value","_typeof","obj","Symbol","iterator","constructor","_classCallCheck","instance","Constructor","mulTable","shgTable","getImageDataFromCanvas","topX","topY","getElementById","context","processCanvasRGBA","radius","imageData","processImageDataRGBA","stackEnd","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_p2","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","getTime","notARegExp","correctIsRegExpLogic","IS_PURE","un$EndsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","writable","searchString","that","endPosition","search","regexpFlags","shared","create","getInternalState","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","state","raw","charsAdded","strCopy","input","_defineProperty","configurable","__esModule","dotAll","vendors","suffix","raf","caf","last","queue","callback","_now","cp","cancelled","handle","polyfill","requestAnimationFrame","cancelAnimationFrame","whitespaces","non","METHOD_NAME","$IndexOf","un$IndexOf","NEGATIVE_ZERO","searchElement","fromIndex","setPrototypeOf","hasOwnProperty","o","T","cX","cY","phi1","phi2","N","E","M","I","L","ROUND","TO_ABS","TO_REL","NORMALIZE_HVZ","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxX","maxY","DRAWING_COMMANDS","w","U","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","SyntaxError","encode","getBounds","aCallable","IndexedObject","lengthOfArrayLike","createMethod","IS_RIGHT","argumentsLength","memo","self","right","createNonEnumerableProperty","SPECIES","KEY","FORCED","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","uncurriedNativeMethod","$exec","normalizeArray","allowAboveRoot","up","splice","unshift","basename","matchedSlash","xs","resolvedPath","resolvedAbsolute","normalize","isAbsolute","trailingSlash","paths","arr","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","code","hasRoot","ext","extname","startDot","startPart","preDotState"],"mappings":"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AK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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","file":"js/chunk-6757b79e.097bd605.js","sourcesContent":["var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","import 'core-js/modules/es.promise.js';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport 'core-js/modules/es.string.match.js';\nimport 'core-js/modules/es.string.replace.js';\nimport 'core-js/modules/es.string.starts-with.js';\nimport 'core-js/modules/es.array.iterator.js';\nimport 'core-js/modules/web.dom-collections.iterator.js';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport 'core-js/modules/es.array.reduce.js';\nimport 'core-js/modules/es.string.ends-with.js';\nimport 'core-js/modules/es.string.split.js';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.string.trim.js';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.string.includes.js';\nimport 'core-js/modules/es.array.index-of.js';\nimport 'core-js/modules/es.array.reverse.js';\nimport { SVGPathData } from 'svg-pathdata';\nimport 'core-js/modules/es.regexp.to-string.js';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @returns Preset object.\r\n */\nfunction offscreen() {\n var {\n DOMParser: DOMParserFallback\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n\n createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n\n createImage(url) {\n return _asyncToGenerator(function* () {\n var response = yield fetch(url);\n var blob = yield response.blob();\n var img = yield createImageBitmap(blob);\n return img;\n })();\n }\n\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n * @returns Preset object.\r\n */\nfunction node(_ref) {\n var {\n DOMParser,\n canvas,\n fetch\n } = _ref;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n * @returns String.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n * @returns String.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n * @returns Numbers array.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return matches.map(parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n * @returns Normalized attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n * @returns Parsed URL.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n * @returns Normalized color.\r\n */\n\nfunction normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s+>~.[:]+)/g;\nvar classRegex = /(\\.[^\\s+>~.[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nvar elementRegex = /([^\\s+>~.[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = regex.exec(selector);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n * @returns Specificity.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]\n\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n * @param u\r\n * @param v\r\n * @returns Number result.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n constructor(document, name, value) {\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n\n split() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var {\n document,\n name\n } = this;\n return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));\n }\n\n hasValue(zeroIsValue) {\n var {\n value\n } = this;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n\n isString(regexp) {\n var {\n value\n } = this;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n\n setValue(value) {\n this.value = value;\n return this;\n }\n\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var {\n value\n } = this;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n /= 100.0;\n }\n\n return n;\n }\n\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n\n getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n\n getDpi() {\n return 96.0; // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize;\n }\n\n getEm() {\n return this.document.emSize;\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n\n getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];\n var {\n viewPort\n } = this.document.screen;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n\n getDefinition() {\n var asString = this.getString();\n var name = /#([^)'\"]+)/.exec(asString);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n\n getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n\n addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n constructor() {\n this.viewPorts = [];\n }\n\n clear() {\n this.viewPorts = [];\n }\n\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n\n removeCurrent() {\n this.viewPorts.pop();\n }\n\n getCurrent() {\n var {\n viewPorts\n } = this;\n return viewPorts[viewPorts.length - 1];\n }\n\n get width() {\n return this.getCurrent().width;\n }\n\n get height() {\n return this.getCurrent().height;\n }\n\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n\n}\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n\n static parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n\n static parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n\n static parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n\n applyTransform(transform) {\n var {\n x,\n y\n } = this;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n\n}\n\nclass Mouse {\n constructor(screen) {\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n isWorking() {\n return this.working;\n }\n\n start() {\n if (this.working) {\n return;\n }\n\n var {\n screen,\n onClick,\n onMouseMove\n } = this;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n\n stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n\n runEvents() {\n if (!this.working) {\n return;\n }\n\n var {\n screen: document,\n events,\n eventElements\n } = this;\n var {\n style\n } = document.ctx.canvas;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach((_ref, i) => {\n var {\n run\n } = _ref;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n this.events = [];\n this.eventElements = [];\n }\n\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref2, i) => {\n var {\n x,\n y\n } = _ref2;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var {\n events,\n eventElements\n } = this;\n events.forEach((_ref3, i) => {\n var {\n x,\n y\n } = _ref3;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n\n mapXY(x, y) {\n var {\n window,\n ctx\n } = this.screen;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n\n onClick(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n\n });\n }\n\n onMouseMove(event) {\n var {\n x,\n y\n } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n\n });\n }\n\n}\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\nclass Screen {\n constructor(ctx) {\n var {\n fetch = defaultFetch$1,\n window = defaultWindow\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n wait(checker) {\n this.waits.push(checker);\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(_ => _());\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n\n setViewBox(_ref) {\n var {\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n } = _ref;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n\n start(element) {\n var {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var {\n FRAMERATE,\n mouse\n } = this;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(resolve => {\n this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = Date.now();\n var then = now;\n var delta = 0;\n\n var tick = () => {\n now = Date.now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n\n this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var {\n frameDuration\n } = this;\n var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var {\n CLIENT_WIDTH,\n CLIENT_HEIGHT,\n viewPort,\n ctx,\n isFirstRender\n } = this;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1.0 / xRatio, \", \").concat(1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\n\nvar {\n defaultFetch\n} = Screen;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\nclass Parser {\n constructor() {\n var {\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n parse(resource) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n if (resource.startsWith('<')) {\n return _this.parseFromString(resource);\n }\n\n return _this.load(resource);\n })();\n }\n\n parseFromString(xml) {\n var parser = new this.DOMParser();\n\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n\n checkDocument(document) {\n var parserError = document.getElementsByTagName('parsererror')[0];\n\n if (parserError) {\n throw new Error(parserError.textContent);\n }\n\n return document;\n }\n\n load(url) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var response = yield _this2.fetch(url);\n var xml = yield response.text();\n return _this2.parseFromString(xml);\n })();\n }\n\n}\n\nclass Translate {\n constructor(_, point) {\n this.type = 'translate';\n this.point = null;\n this.point = Point.parse(point);\n }\n\n apply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(x || 0.0, y || 0.0);\n }\n\n unapply(ctx) {\n var {\n x,\n y\n } = this.point;\n ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.point;\n point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);\n }\n\n}\n\nclass Rotate {\n constructor(document, rotate, transformOrigin) {\n this.type = 'rotate';\n this.angle = null;\n this.originX = null;\n this.originY = null;\n this.cx = 0;\n this.cy = 0;\n var numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n\n apply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this;\n var tx = cx + originX.getPixels('x');\n var ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n cx,\n cy,\n angle\n } = this;\n var rad = angle.getRadians();\n point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y\n ]);\n point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);\n point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y\n ]);\n }\n\n}\n\nclass Scale {\n constructor(_, scale, transformOrigin) {\n this.type = 'scale';\n this.scale = null;\n this.originX = null;\n this.originY = null;\n var scaleSize = Point.parseScale(scale); // Workaround for node-canvas\n\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1.0 / x, 1.0 / y || x);\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n var {\n x,\n y\n } = this.scale;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n\n}\n\nclass Matrix {\n constructor(_, matrix, transformOrigin) {\n this.type = 'matrix';\n this.matrix = [];\n this.originX = null;\n this.originY = null;\n this.matrix = toNumbers(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n\n apply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n\n unapply(ctx) {\n var {\n originX,\n originY,\n matrix\n } = this;\n var a = matrix[0];\n var b = matrix[2];\n var c = matrix[4];\n var d = matrix[1];\n var e = matrix[3];\n var f = matrix[5];\n var g = 0.0;\n var h = 0.0;\n var i = 1.0;\n var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n var tx = originX.getPixels('x');\n var ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = null;\n this.angle = new Property(document, 'angle', skew);\n }\n\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];\n }\n\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin) {\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];\n }\n\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\n\nfunction parseTransform(transform) {\n var [type, value] = transform.split('(');\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nclass Transform {\n constructor(document, transform, transformOrigin) {\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n data.forEach(transform => {\n if (transform === 'none') {\n return;\n }\n\n var [type, value] = parseTransform(transform);\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n\n static fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n\n apply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n\n unapply(ctx) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = len - 1; i >= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n\n applyToPoint(point) {\n var {\n transforms\n } = this;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n constructor(document, node) {\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n Array.from(node.attributes).forEach(attribute => {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());\n styles.forEach(style => {\n if (!style) {\n return;\n }\n\n var [name, value] = style.split(':').map(_ => _.trim());\n this.styles[name] = new Property(document, name, value);\n });\n }\n\n var {\n definitions\n } = document;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(childNode => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode); // ELEMENT_NODE\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode); // TEXT_NODE\n }\n }\n });\n }\n\n getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n\n getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n\n getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr !== null && attr !== void 0 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var {\n parent\n } = this;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n\n setContext(_) {// NO RENDER\n }\n\n applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n\n clearContext(_) {// NO RENDER\n }\n\n renderChildren(ctx) {\n this.children.forEach(child => {\n child.render(ctx);\n });\n }\n\n addChild(childNode) {\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n\n matchesSelector(selector) {\n var {\n node\n } = this;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = node.getAttribute('class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return styleClasses.split(' ').some(styleClass => \".\".concat(styleClass) === selector);\n }\n\n addStylesFromStyleDefinition() {\n var {\n styles,\n stylesSpecificity\n } = this.document;\n\n for (var selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n\n removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce((toRestore, name) => {\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return [...toRestore, [name, value]];\n }, []);\n return toRestore;\n }\n\n restoreStyles(element, styles) {\n styles.forEach((_ref) => {\n var [name, value] = _ref;\n element.getStyle(name, true).setValue(value);\n });\n }\n\n}\nElement.ignoreChildTypes = ['title'];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n }\n\n}\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n * @param fontStyle\r\n * @returns CSS font style.\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = fontStyle.trim().toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n * @param fontWeight\r\n * @returns CSS font weight.\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = fontWeight.trim().toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nclass Font {\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n static parse() {\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n var parts = compressSpaces(font).trim().split(' ');\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach(part => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n [fontSize] = part.split('/');\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n\n toString() {\n return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ').trim();\n }\n\n}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n constructor() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n get x() {\n return this.x1;\n }\n\n get y() {\n return this.y1;\n }\n\n get width() {\n return this.x2 - this.x1;\n }\n\n get height() {\n return this.y2 - this.y1;\n }\n\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n\n addX(x) {\n this.addPoint(x, null);\n }\n\n addY(y) {\n this.addPoint(null, y);\n }\n\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var {\n x1,\n y1,\n x2,\n y2\n } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n\n isPointInBox(x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n\n}\n\nclass PathParser extends SVGPathData {\n constructor(path) {\n super(path // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n\n isEnd() {\n var {\n i,\n commands\n } = this;\n return i >= commands.length - 1;\n }\n\n next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n\n getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n\n getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n\n getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n\n getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n\n makeAbsolute(point) {\n if (this.command.relative) {\n var {\n x,\n y\n } = this.current;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n\n addMarker(point, from, priorTo) {\n var {\n points,\n angles\n } = this; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n\n getMarkerPoints() {\n return this.points;\n }\n\n getMarkerAngles() {\n var {\n angles\n } = this;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n\n}\n\nclass RenderedElement extends Element {\n constructor() {\n super(...arguments);\n this.modifiedEmSizeStack = false;\n }\n\n calculateOpacity() {\n var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n } // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // \t// ?\n // \tctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n\n}\n\nclass PathElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = null;\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n\n path(ctx) {\n var {\n pathParser\n } = this;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n\n getBoundingBox(_) {\n return this.path();\n }\n\n getMarkers() {\n var {\n pathParser\n } = this;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map((point, i) => [point, angles[i]]);\n return markers;\n }\n\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n var [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var [_point, _angle] = markers[i];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var [_point2, _angle2] = markers[markersLastIndex];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n\n static pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n\n pathM(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n point\n } = PathElement.pathM(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n\n static pathL(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n\n pathL(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathL(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathH(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathH(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathH(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathV(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n\n pathV(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point\n } = PathElement.pathV(pathParser);\n var {\n x,\n y\n } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n\n static pathC(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathC(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathS(pathParser) {\n var {\n current\n } = pathParser;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n\n pathS(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathQ(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathQ(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathT(pathParser) {\n var {\n current\n } = pathParser;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n\n pathT(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n\n static pathA(pathParser) {\n var {\n current,\n command\n } = pathParser;\n var {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n\n pathA(ctx, boundingBox) {\n var {\n pathParser\n } = this;\n var {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser); // for markers\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n\n static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n\n}\n\nclass TextElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.measureCache = -1;\n }\n\n setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n\n initializeCoordinates(ctx) {\n this.x = this.getAttribute('x').getPixels('x');\n this.y = this.getAttribute('y').getPixels('y');\n var dxAttr = this.getAttribute('dx');\n var dyAttr = this.getAttribute('dy');\n\n if (dxAttr.hasValue()) {\n this.x += dxAttr.getPixels('x');\n }\n\n if (dyAttr.hasValue()) {\n this.y += dyAttr.getPixels('y');\n }\n\n this.x += this.getAnchorDelta(ctx, this, 0);\n }\n\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n\n this.initializeCoordinates(ctx);\n var boundingBox = null;\n this.children.forEach((_, i) => {\n var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n\n getFontSize() {\n var {\n document,\n parent\n } = this;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n\n getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n\n getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n // NEED TEST\n var maybeGlyph = font.glyphs[char];\n glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n\n getText() {\n return '';\n }\n\n getTextFromNode(node) {\n var textNode = node || this.node;\n var childNodes = Array.from(textNode.parentNode.childNodes);\n var index = childNodes.indexOf(textNode);\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces( // textNode.value\n // || textNode.text\n textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n\n this.initializeCoordinates(ctx);\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i);\n });\n var {\n mouse\n } = this.document.screen; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n\n renderTElementChildren(ctx) {\n var {\n document,\n parent\n } = this;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var {\n unitsPerEm\n } = customFont.fontFace;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var {\n x,\n y\n } = this; // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // \tif (ctx.strokeStyle) {\n // \t\tctx.strokeText(renderText, x, y);\n // \t}\n // \tif (ctx.fillStyle) {\n // \t\tctx.fillText(renderText, x, y);\n // \t}\n // } else {\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n } // }\n\n }\n\n getAnchorDelta(ctx, parent, startI) {\n var textAnchor = this.getStyle('text-anchor').getString('start');\n\n if (textAnchor !== 'start') {\n var {\n children\n } = parent;\n var len = children.length;\n var child = null;\n var width = 0;\n\n for (var i = startI; i < len; i++) {\n child = children[i];\n\n if (i > startI && child.getAttribute('x').hasValue() || child.getAttribute('text-anchor').hasValue()) {\n break; // new group\n }\n\n width += child.measureTextRecursive(ctx);\n }\n\n return -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n return 0;\n }\n\n adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var textAnchor = child.getAttribute('text-anchor').getString('start');\n\n if (i === 0 && child.type !== 'textNode') {\n if (!xAttr.hasValue()) {\n xAttr.setValue(textParent.getAttribute('x').getValue('0'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(textParent.getAttribute('y').getValue('0'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(textParent.getAttribute('dx').getValue('0'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(textParent.getAttribute('dy').getValue('0'));\n }\n }\n\n if (xAttr.hasValue()) {\n child.x = xAttr.getPixels('x') + textParent.getAnchorDelta(ctx, parent, i);\n\n if (textAnchor !== 'start') {\n var width = child.measureTextRecursive(ctx);\n child.x += -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (textAnchor !== 'start') {\n var _width = child.measureTextRecursive(ctx);\n\n textParent.x += -1 * (textAnchor === 'end' ? _width : _width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x + child.measureText(ctx);\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y;\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n\n getChildBoundingBox(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i); // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach((_, i) => {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n\n renderChild(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n child.render(ctx);\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n\n measureTextRecursive(ctx) {\n var width = this.children.reduce((width, child) => width + child.measureTextRecursive(ctx), this.measureText(ctx));\n return width;\n }\n\n measureText(ctx) {\n var {\n measureCache\n } = this;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var {\n parent\n } = this;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n var {\n width: measure\n } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n\n}\n\nclass TSpanElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan'; // if this node has children, then they own the text\n\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n\n getText() {\n return this.text;\n }\n\n}\n\nclass TextNode extends TSpanElement {\n constructor() {\n super(...arguments);\n this.type = 'textNode';\n }\n\n}\n\nclass SVGElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'svg';\n this.root = false;\n }\n\n setContext(ctx) {\n var _this$node$parentNode;\n\n var {\n document\n } = this;\n var {\n screen,\n window\n } = document;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var {\n width,\n height\n } = screen.viewPort;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n\n}\n\nclass RectElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'rect';\n }\n\n path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass CircleElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'circle';\n }\n\n path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass EllipseElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'ellipse';\n }\n\n path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n\n getMarkers() {\n return null;\n }\n\n}\n\nclass LineElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'line';\n }\n\n getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n\n path(ctx) {\n var [{\n x: x0,\n y: y0\n }, {\n x: x1,\n y: y1\n }] = this.getPoints();\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n\n getMarkers() {\n var [p0, p1] = this.getPoints();\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n\n}\n\nclass PolylineElement extends PathElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n\n path(ctx) {\n var {\n points\n } = this;\n var [{\n x: x0,\n y: y0\n }] = points;\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach((_ref) => {\n var {\n x,\n y\n } = _ref;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n\n getMarkers() {\n var {\n points\n } = this;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n\n}\n\nclass PolygonElement extends PolylineElement {\n constructor() {\n super(...arguments);\n this.type = 'polygon';\n }\n\n path(ctx) {\n var boundingBox = super.path(ctx);\n var [{\n x,\n y\n }] = this.points;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n\n}\n\nclass PatternElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'pattern';\n }\n\n createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n\n}\n\nclass MarkerElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'marker';\n }\n\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var {\n x,\n y\n } = point;\n var orient = this.getAttribute('orient').getString('auto');\n var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n\n}\n\nclass DefsElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'defs';\n }\n\n render() {// NOOP\n }\n\n}\n\nclass GElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'g';\n }\n\n getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n\n}\n\nclass GradientElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.attributesToInherit = ['gradientUnits'];\n this.stops = [];\n var {\n stops,\n children\n } = this;\n children.forEach(child => {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var {\n stops\n } = stopsContainer;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n stops.forEach(stop => {\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var {\n document\n } = this;\n var {\n MAX_VIRTUAL_PIXELS,\n viewPort\n } = document.screen;\n var [rootView] = viewPort.viewPorts;\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach(attributeToInherit => {\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n\n}\n\nclass LinearGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n\n}\n\nclass RadialGradientElement extends GradientElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n\n getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'stop';\n var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n var stopOpacity = this.getStyle('stop-opacity');\n var stopColor = this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n\n}\n\nclass AnimateElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialValue = null;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n var valuesAttr = this.getAttribute('values');\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n\n getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n\n calcValue() {\n var {\n initialUnits\n } = this;\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return \"\".concat(newValue).concat(initialUnits);\n }\n\n update(delta) {\n var {\n parent\n } = this;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n\n getProgress() {\n var {\n document,\n values\n } = this;\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n\n}\n\nclass AnimateColorElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateColor';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress();\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n\n}\n\nclass AnimateTransformElement extends AnimateElement {\n constructor() {\n super(...arguments);\n this.type = 'animateTransform';\n }\n\n calcValue() {\n var {\n progress,\n from,\n to\n } = this.getProgress(); // tween value linearly\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map((from, i) => {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n\n}\n\nclass FontElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.glyphs = {};\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n var {\n definitions\n } = document;\n var {\n children\n } = this;\n\n for (var child of children) {\n switch (child.type) {\n case 'font-face':\n {\n this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n\n break;\n }\n\n case 'missing-glyph':\n this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n\n if (typeof this.glyphs[glyph.unicode] === 'undefined') {\n this.glyphs[glyph.unicode] = {};\n }\n\n this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n }\n }\n }\n\n render() {// NO RENDER\n }\n\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n\n}\n\nclass MissingGlyphElement extends PathElement {\n constructor() {\n super(...arguments);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n\n}\n\nclass TRefElement extends TextElement {\n constructor() {\n super(...arguments);\n this.type = 'tref';\n }\n\n getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n\n}\n\nclass AElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'a';\n var {\n childNodes\n } = node;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n\n getText() {\n return this.text;\n }\n\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n var {\n document,\n x,\n y\n } = this;\n var {\n mouse\n } = document.screen;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n\n onClick() {\n var {\n window\n } = this.document;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n\n onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nclass TextPathElement extends TextElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([['', 0]]);\n var pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n\n getText() {\n return this.text;\n }\n\n path(ctx) {\n var {\n dataArray\n } = this;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach((_ref) => {\n var {\n type,\n points\n } = _ref;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var {\n glyphInfo\n } = this;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach((glyph, i) => {\n var {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n\n getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0,\n p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n\n measureText(ctx, text) {\n var {\n measuresCache\n } = this;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n\n setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n\n parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var {\n pathParser\n } = path;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var {\n current\n } = pathParser;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n\n pathM(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n\n pathL(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathH(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathV(pathParser, points) {\n var {\n x,\n y\n } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n\n pathC(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathS(pathParser, points) {\n var {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n\n pathQ(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n pathT(pathParser, points) {\n var {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n\n pathA(pathParser) {\n var {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser);\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n\n calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n\n return 0;\n }\n\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;\n var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (p2x === p1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(p1x, p1y, p2x, p2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (p2x < p1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n\n getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var {\n dataArray\n } = this;\n\n for (var command of dataArray) {\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n {\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n\n return null;\n }\n\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);\n }\n\n return this.pathLength;\n }\n\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n\n buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n\n getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n\n}\n\nvar dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n var href = this.getHrefAttribute().getString();\n\n if (!href) {\n return;\n }\n\n var isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n\n this.isSvg = isSvg;\n }\n\n loadImage(href) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var image = yield _this.document.createImage(href);\n _this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n loadSvg(href) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var match = dataUriRegex.exec(href);\n\n if (match) {\n var data = match[5];\n\n if (match[4] === 'base64') {\n _this2.image = atob(data);\n } else {\n _this2.image = decodeURIComponent(data);\n }\n } else {\n try {\n var response = yield _this2.document.fetch(href);\n var svg = yield response.text();\n _this2.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n\n _this2.loaded = true;\n })();\n }\n\n renderChildren(ctx) {\n var {\n document,\n image,\n loaded\n } = this;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n\n if (this.isSvg) {\n var subDocument = document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n subDocument.document.documentElement.parent = this;\n void subDocument.render();\n } else {\n var _image = this.image;\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: _image.width,\n height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n\n getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n\n}\n\nclass SymbolElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'symbol';\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass SVGFontLoader {\n constructor(document) {\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n load(fontFamily, url) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n try {\n var {\n document\n } = _this;\n var svgDocument = yield document.canvg.parser.load(url);\n var fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(fontNode => {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n\n _this.loaded = true;\n })();\n }\n\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes) // NEED TEST\n .map(_ => _.textContent).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n cssDefs.forEach(_ => {\n var def = _.trim();\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n cssClasses.forEach(_ => {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(cssProp => {\n var prop = cssProp.indexOf(':');\n var name = cssProp.substr(0, prop).trim();\n var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n srcs.forEach(src => {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n constructor() {\n super(...arguments);\n this.type = 'use';\n }\n\n setContext(ctx) {\n super.setContext(ctx);\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n\n path(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n element.path(ctx);\n }\n }\n\n renderChildren(ctx) {\n var {\n document,\n element\n } = this;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n\n getBoundingBox(ctx) {\n var {\n element\n } = this;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n\n elementTransform() {\n var {\n document,\n element\n } = this;\n return Transform.fromElement(document, element);\n }\n\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n\n return this.cachedElement;\n }\n\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nclass FeColorMatrixElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n var matrix = toNumbers(this.getAttribute('values').getString());\n\n switch (this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n /* eslint-disable array-element-newline */\n\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n /* eslint-disable array-element-newline */\n\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n /* eslint-enable array-element-newline */\n\n break;\n }\n\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n var {\n includeOpacity,\n matrix\n } = this;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n\n}\n\nclass MaskElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'mask';\n }\n\n apply(ctx, element) {\n var {\n document\n } = this; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var boundingBox = new BoundingBox();\n this.children.forEach(child => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nvar noop = () => {// NOOP\n};\n\nclass ClipPathElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'clipPath';\n }\n\n apply(ctx) {\n var {\n document\n } = this;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var {\n beginPath,\n closePath\n } = ctx;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(child => {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n\n render(_) {// NO RENDER\n }\n\n}\n\nclass FilterElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'filter';\n }\n\n apply(ctx, element) {\n // render as temp svg\n var {\n document,\n children\n } = this;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n children.forEach(child => {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n children.forEach(child => {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n\n render(_) {// NO RENDER\n }\n\n}\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nclass FeDropShadowElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeMorphologyElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feMorphology';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeCompositeElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'feComposite';\n }\n\n apply(_, _x, _y, _width, _height) {// TODO: implement\n }\n\n}\n\nclass FeGaussianBlurElement extends Element {\n constructor(document, node, captureTextNodes) {\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n\n apply(ctx, x, y, width, height) {\n var {\n document,\n blurRadius\n } = this;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n\n}\n\nclass TitleElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'title';\n }\n\n}\n\nclass DescElement extends Element {\n constructor() {\n super(...arguments);\n this.type = 'desc';\n }\n\n}\n\nvar elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator(function* (src) {\n var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error);\n };\n\n image.src = src;\n });\n });\n return _createImage.apply(this, arguments);\n}\n\nclass Document {\n constructor(canvg) {\n var {\n rootEmSize = 12,\n emSize = 12,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(this.isImagesLoaded.bind(this));\n this.screen.wait(this.isFontsLoaded.bind(this));\n }\n\n bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n }\n\n return createImage;\n }\n\n get window() {\n return this.screen.window;\n }\n\n get fetch() {\n return this.screen.fetch;\n }\n\n get ctx() {\n return this.screen.ctx;\n }\n\n get emSize() {\n var {\n emSizeStack\n } = this;\n return emSizeStack[emSizeStack.length - 1];\n }\n\n set emSize(value) {\n var {\n emSizeStack\n } = this;\n emSizeStack.push(value);\n }\n\n popEmSize() {\n var {\n emSizeStack\n } = this;\n emSizeStack.pop();\n }\n\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded);\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded);\n }\n\n createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n\n createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n\n createTextNode(node) {\n return new TextNode(this, node);\n }\n\n setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nclass Canvg {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n constructor(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static from(ctx, svg) {\n var _arguments = arguments;\n return _asyncToGenerator(function* () {\n var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = yield parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n })();\n }\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n static fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n * @returns Canvg instance.\r\n */\n\n\n forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n * @returns Ready promise.\r\n */\n\n\n ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n * @returns Is ready or not.\r\n */\n\n\n isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n\n render() {\n var _arguments2 = arguments,\n _this = this;\n\n return _asyncToGenerator(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n\n _this.start(_objectSpread({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n\n yield _this.ready();\n\n _this.stop();\n })();\n }\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n\n start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n documentElement,\n screen,\n options: baseOptions\n } = this;\n screen.start(documentElement, _objectSpread(_objectSpread({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n\n stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n\n resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n\n}\n\nexport default Canvg;\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar un$Reverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return un$Reverse(this);\n }\n});\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov \n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || !('naturalWidth' in img)) {\n return;\n }\n\n var dimensionType = useOffset ? 'offset' : 'natural';\n var w = img[dimensionType + 'Width'];\n var h = img[dimensionType + 'Height'];\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >> shgSum;\n pixels[yi + 1] = gSum * mulSum >> shgSum;\n pixels[yi + 2] = bSum * mulSum >> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;et.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;vc.maxX&&(c.maxX=t),tc.maxY&&(c.maxY=t),tw&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);fw&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return iR&&wR&&wu)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n"],"sourceRoot":""}