{"version":3,"sources":["webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/object-is-extensible.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/rgbcolor/index.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/core-js/modules/es.reflect.get.js","webpack:///./node_modules/stackblur-canvas/dist/stackblur-es.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/core-js/modules/es.global-this.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/modules/es.map.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/canvg/index.js","webpack:///./node_modules/@babel/runtime/helpers/get.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/@babel/runtime/helpers/superPropBase.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.reflect.apply.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/core-js/internals/is-data-descriptor.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js"],"names":["uncurryThis","aCallable","isObject","hasOwn","arraySlice","NATIVE_BIND","$Function","Function","concat","join","factories","construct","C","argsLength","args","list","i","module","exports","bind","that","F","this","Prototype","prototype","partArgs","arguments","boundFunction","length","apply","_nonIterableSpread","TypeError","__esModule","toObject","floor","Math","charAt","replace","stringSlice","slice","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","position","captures","namedCaptures","replacement","tailPos","m","symbols","undefined","match","ch","capture","n","f","_iterableToArray","iter","Symbol","iterator","Array","from","$","$reduce","left","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","STRICT_METHOD","CHROME_BUG","target","proto","forced","reduce","callbackfn","arrayLikeToArray","require","_arrayWithoutHoles","arr","isArray","un$Reverse","reverse","test","String","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","_getPrototypeOf","o","Object","setPrototypeOf","getPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","valueOf","forEach","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","$some","some","$trim","trim","forcedStringTrimMethod","_setPrototypeOf","p","getBuiltIn","aConstructor","anObject","create","fails","nativeConstruct","ObjectPrototype","push","NEW_TARGET_BUG","ARGS_BUG","FORCED","stat","sham","Target","newTarget","$args","instance","result","call","callWithSafeIterationClosing","isArrayIteratorMethod","isConstructor","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","$Array","arrayLike","O","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","step","next","value","iteratorMethod","index","done","classof","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","isExtensible","FAILS_ON_PRIMITIVES","it","fixRegExpWellKnownSymbolLogic","isCallable","toIntegerOrInfinity","toLength","toString","requireObjectCoercible","advanceStringIndex","getMethod","getSubstitution","regExpExec","wellKnownSymbol","REPLACE","max","min","stringIndexOf","indexOf","maybeToString","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","a","_","nativeReplace","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","string","rx","S","res","functionalReplace","global","fullUnicode","unicode","lastIndex","results","matchStr","accumulatedResult","nextSourcePosition","j","replacerArgs","whitespaces","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","start","end","color_string","ok","alpha","substr","toLowerCase","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","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","process","bits","parseInt","parseFloat","processor","channels","r","g","b","isNaN","toRGB","toRGBA","toHex","getHelpXML","examples","sc","xml","document","createElement","setAttribute","list_item","list_color","RGBColor","example_div","style","cssText","appendChild","createTextNode","list_item_value","e","_arrayLikeToArray","len","arr2","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","_createClass","Constructor","protoProps","staticProps","isDataDescriptor","getOwnPropertyDescriptorModule","get","propertyKey","receiver","_typeof","obj","constructor","_classCallCheck","mulTable","shgTable","getImageDataFromCanvas","canvas","topX","topY","width","height","getElementById","context","getContext","getImageData","Error","processCanvasRGBA","radius","imageData","processImageDataRGBA","putImageData","stackEnd","pixels","data","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackIn","stackOut","yw","yi","mulSum","shgSum","y","pr","pg","pb","pa","_i","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","x","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","defineBuiltIns","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","iterable","type","first","last","size","AS_ENTRIES","getInternalState","define","previous","state","entry","getEntry","removed","clear","prev","has","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","_unsupportedIterableToArray","minLen","name","assertThisInitialized","_possibleConstructorReturn","globalThis","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","now","hr","uptime","Date","getTime","isForced","defineBuiltIn","InternalMetadataModule","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","entries","enable","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","collection","collectionStrong","init","_regeneratorRuntime","Op","hasOwnProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","method","arg","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","keys","object","pop","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","objectGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","compressSpaces","trimLeft","trimRight","toNumbers","matches","map","allUppercase","normalizeAttributeName","parseExternalUrl","url","urlMatch","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","_findSelectorMatch","_findSelectorMatch2","_findSelectorMatch3","_findSelectorMatch4","_findSelectorMatch5","_findSelectorMatch6","_findSelectorMatch7","_findSelectorMatch8","_findSelectorMatch9","_findSelectorMatch10","_findSelectorMatch11","_findSelectorMatch12","_findSelectorMatch13","_findSelectorMatch14","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","createCommonjsModule","runtime","undefined$1","makeInvokeMethod","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","enqueue","rootEntry","regeneratorRuntime","accidentalStrictMode","Property","isNormalizedColor","regexp","isString","hasValue","asString","getString","def","rootEmSize","emSize","axisOrIsFontSize","processPercent","_ref","_ref2","axis","isFontSize","viewPort","screen","getNumber","computeSize","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","commas","ViewPort","viewPorts","d","getCurrent","Point","point","atan2","transform","xp","defaultValue","_toNumbers","_toNumbers2","_toNumbers2$","_toNumbers2$2","scale","_toNumbers3","_toNumbers4","_toNumbers4$","_toNumbers4$2","path","points","pathPoints","Mouse","working","events","eventElements","onClick","onMouseMove","onclick","onmousemove","cursor","run","parent","isPointInPath","boundingBox","_ref3","isPointInBox","_this$screen","window","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","evt","_this$mapXY","mapXY","event","clientX","clientY","_this$mapXY2","defaultWindow","defaultFetch","fetch","Screen","_ref$fetch","_ref$window","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","checker","readyPromise","every","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","_ref2$minX","minX","_ref2$minY","minY","refX","refY","_ref2$clip","clip","_ref2$clipX","clipX","_ref2$clipY","clipY","cleanAspectRatio","_cleanAspectRatio$spl","split","_cleanAspectRatio$spl2","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","_this","_ref3$enableRedraw","enableRedraw","_ref3$ignoreMouse","ignoreMouse","_ref3$ignoreAnimation","ignoreAnimation","_ref3$ignoreDimension","ignoreDimensions","_ref3$ignoreClear","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","tick","shouldUpdate","runEvents","cancel","animation","update","hasEvents","setCurrent","widthStyle","getStyle","heightStyle","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","_widthStyle","_heightStyle","transformStyle","clearRect","defaultFetch$1","DefaultDOMParser","DOMParser","Parser","_ref$DOMParser","_parse","_callee","resource","_context","parseFromString","load","parse","parser","checkDocument","parserError","getElementsByTagName","textContent","_load","_callee2","response","_context2","text","_x2","Translate","_this$point","_this$point2","_this$point3","applyTransform","Rotate","rotate","transformOrigin","angle","cx","cy","numbers","getRadians","rad","cos","sin","Scale","scaleSize","parseScale","_this$scale","_this$scale2","_this$scale3","Matrix","matrix","c","h","det","_createSuper","Derived","Super","_isNativeReflectConstruct","NewTarget","Reflect","Proxy","Skew","_Matrix","_super","skew","_createSuper$1","_isNativeReflectConstruct$1","SkewX","_Skew","_createSuper$2","_isNativeReflectConstruct$2","SkewY","parseTransforms","parseTransform","_transform$split","_transform$split2","Transform","transforms","originCoords","_parseTransform","_parseTransform2","TransformType","transformTypes","unapply","applyToPoint","transformOriginStyle","skewX","skewY","Element","node","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","attribute","nodeName","addStylesFromStyleDefinition","_style$split$map","_style$split$map2","id","getValue","childNodes","childNode","addChild","textNode","getText","createIfNotExists","attr","_attr","empty","skipAncestors","parentStyle","_style","save","mask","applyEffects","filter","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","child","ignoreChildTypes","includes","styleClasses","styleClass","_this$document","matchesSelector","existingSpecificity","ignoreStyles","toRestore","styleProp","_createSuper$3","_isNativeReflectConstruct$3","UnknownElement","_Element","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","font","parts","part","variants","weights","_part$split","_part$split2","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","_createSuper$4","_isNativeReflectConstruct$4","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","pointOrderStyleProp","strokeDasharrayStyleProp","strokeDashoffsetProp","paintOrder","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","globalAlpha","calculateOpacity","popEmSize","_createSuper$5","_isNativeReflectConstruct$5","TextElement","_RenderedElement","measureCache","textBaseline","getTextBaseline","dxAttr","dyAttr","getAnchorDelta","_this2","getTElementBoundingBox","initializeCoordinates","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","arabicForm","glyphs","missingGlyph","parentNode","_this3","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","dx","getGlyph","lw","horizAdvX","strokeText","fillText","startI","textAnchor","measureTextRecursive","textParent","xAttr","yAttr","_width","adjustChildCoordinates","measure","measureTargetText","targetText","_measure","_ctx$measureText","_createSuper$6","_isNativeReflectConstruct$6","TSpanElement","_TextElement","getTextFromNode","_createSuper$7","_isNativeReflectConstruct$7","TextNode","_TSpanElement","preparePath","PathParser","control","current","command","tokens","previousCommand","angles","isEnd","getToken","getScalar","makeAbsolute","getPoint","_this$current","_this$control","ox","oy","isRelativeCommand","_this$current2","priorTo","angleTo","addMarkerAngle","_createSuper$8","_isNativeReflectConstruct$8","PathElement","pathParser","nextCommand","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","fill","stroke","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_markers$","_marker","_markers$i","_point","_angle","_marker2","_markers$markersLastI","_point2","_angle2","getAsCurrentPoint","addMarker","isCommandOrEnd","_point3","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","ry","xAxisRotation","largeArcFlag","sweepFlag","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","Boolean","_createSuper$9","_isNativeReflectConstruct$9","SVGElement","root","removeCurrent","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","_screen$viewPort","refXAttr","refYAttr","viewBoxAttr","setViewBox","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","_createSuper$a","_isNativeReflectConstruct$a","RectElement","_PathElement","rxAttr","ryAttr","KAPPA","_createSuper$b","_isNativeReflectConstruct$b","CircleElement","_createSuper$c","_isNativeReflectConstruct$c","EllipseElement","_createSuper$d","_isNativeReflectConstruct$d","LineElement","_this$getPoints","getPoints","_this$getPoints2","_this$getPoints2$","x0","y0","_this$getPoints2$2","_this$getPoints3","_this$getPoints4","_createSuper$e","_isNativeReflectConstruct$e","PolylineElement","parsePath","_points","_points$","_createSuper$f","_isNativeReflectConstruct$f","PolygonElement","_PolylineElement","_this$points","_this$points$","_createSuper$g","_isNativeReflectConstruct$g","PatternElement","parentOpacityProp","patternSvg","patternCanvas","createCanvas","patternCtx","deleteProperty","pattern","_createSuper$h","_isNativeReflectConstruct$h","MarkerElement","orient","markerUnits","markerSvg","overflow","_createSuper$i","_isNativeReflectConstruct$i","DefsElement","_createSuper$j","_isNativeReflectConstruct$j","GElement","_createSuper$k","_isNativeReflectConstruct$k","GradientElement","attributesToInherit","stops","_assertThisInitialize","stopsContainer","inheritStopContainer","_stopsContainer","gradient","getGradient","addParentOpacity","addColorStop","_document$screen","_viewPort$viewPorts","rootView","rect","group","attributeToInherit","colorProp","_createSuper$l","_isNativeReflectConstruct$l","LinearGradientElement","_GradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","_createSuper$m","_isNativeReflectConstruct$m","RadialGradientElement","fx","fy","fr","createRadialGradient","_createSuper$n","_isNativeReflectConstruct$n","StopElement","stopOpacity","stopColor","_createSuper$o","_isNativeReflectConstruct$o","AnimateElement","duration","initialValue","initialUnits","frozen","begin","getMilliseconds","maxDuration","to","attributeType","attributeName","_this$getProgress","getProgress","progress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","lb","ub","ceil","_createSuper$p","_isNativeReflectConstruct$p","AnimateColorElement","_AnimateElement","colorFrom","colorTo","_createSuper$q","_isNativeReflectConstruct$q","AnimateTransformElement","transformFrom","transformTo","_createForOfIteratorHelper","_e","normalCompletion","didErr","_e2","return","_createSuper$r","_isNativeReflectConstruct$r","FontElement","_step","_iterator","fontFamilyStyle","_createSuper$s","_isNativeReflectConstruct$s","FontFaceElement","ascent","descent","_createSuper$t","_isNativeReflectConstruct$t","MissingGlyphElement","_createSuper$u","_isNativeReflectConstruct$u","GlyphElement","_createSuper$v","_isNativeReflectConstruct$v","TRefElement","firstChild","_createSuper$w","_isNativeReflectConstruct$w","AElement","hasText","open","_createForOfIteratorHelper$1","_unsupportedIterableToArray$1","_arrayLikeToArray$1","_createSuper$x","_isNativeReflectConstruct$x","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","Map","pathElement","dataArray","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","partialText","rotation","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","charI","glyphWidth","getLetterSpacingAt","splineStep","segment","getEquidistantPointOnPath","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","_this2$findSegmentToF","findSegmentToFitChar","nextOffset","getLineLength","kern","midpoint","getPointOnLine","transposeX","transposeY","pathCommands","startX","startY","cmd","upperCommand","toUpperCase","calcLength","getPointOnCubicBezier","getPointOnQuadraticBezier","inc","abs","getPointOnEllipticalArc","dist","P1x","P1y","P2x","P2y","fromX","fromY","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","pathCmd","currentT","pct","P3x","P3y","P4x","P4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","_createSuper$y","_isNativeReflectConstruct$y","ImageElement","loaded","href","isSvg","images","loadSvg","loadImage","_loadImage","image","createImage","t0","console","_loadSvg","svg","canvg","forkString","_image","drawImage","_createSuper$z","_isNativeReflectConstruct$z","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","_createSuper$A","_isNativeReflectConstruct$A","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","cssProp","srcs","src","_createSuper$B","_isNativeReflectConstruct$B","UseElement","tempSvg","oldParent","_element","_createSuper$C","_isNativeReflectConstruct$C","imGet","img","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","__","srcData","nr","ng","nb","na","_createSuper$D","_isNativeReflectConstruct$D","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","restoreStyles","_createSuper$E","_isNativeReflectConstruct$E","noop","ClipPathElement","contextProto","elementTransform","_createSuper$F","_isNativeReflectConstruct$F","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","_createSuper$G","_isNativeReflectConstruct$G","FeDropShadowElement","___","____","_____","_createSuper$H","_isNativeReflectConstruct$H","FeMorphologyElement","_createSuper$I","_isNativeReflectConstruct$I","FeCompositeElement","_createSuper$J","_isNativeReflectConstruct$J","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","removeChild","_createSuper$K","_isNativeReflectConstruct$K","TitleElement","_createSuper$L","_isNativeReflectConstruct$L","DescElement","elementTypes","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","_createImage","anonymousCrossOrigin","_args","crossOrigin","onload","onerror","Document","_ref$rootEmSize","_ref$emSize","_ref$createCanvas","_ref$createImage","emSizeStack","uniqueId","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","documentElement","elementType","ElementType","config","ownKeys$1","_objectSpread$1","Canvg","options","createDocumentElement","fromString","ready","_render","baseOptions","resize","_from","_args2","offscreen","DOMParserFallback","preset","OffscreenCanvas","blob","createImageBitmap","freeze","superPropBase","_get","property","base","desc","_defineProperty","_iterableToArrayLimit","_s","_arr","_n","_d","iteratorClose","ENTRIES","_superPropBase","$every","INCORRECT_ITERATION","functionApply","OPTIONAL_ARGUMENTS_LIST","thisArgument","argumentsList","isPrototypeOf","isSymbol","toPrimitive","getOwnPropertyNames","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","charCodeAt","toNumeric","primValue","toNumber","argument","third","radix","maxCode","digits","code","NumberWrapper","nativeKeys","preventExtensions","_arrayWithHoles","_nonIterableRest","vendors","suffix","raf","caf","queue","callback","_now","setTimeout","cp","cancelled","polyfill","requestAnimationFrame","cancelAnimationFrame","PROPER_FUNCTION_NAME","PROPER","non","METHOD_NAME","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","$IndexOf","un$IndexOf","NEGATIVE_ZERO","searchElement","fromIndex","IndexedObject","$TypeError","IS_RIGHT","memo","right","ArrayBuffer","buffer","toIndexedObject","nativeGetOwnPropertyDescriptor","_inherits","subClass","superClass","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","uid","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","getWeakData","onFreeze","meta","splice"],"mappings":"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AAK,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,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,GAA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","file":"js/canvg.0d71f3c4.js","sourcesContent":["'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'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 arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'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","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\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","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\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","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\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 _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n if (descriptor) return isDataDescriptor(descriptor)\n ? descriptor.value\n : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\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","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\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 global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(target) {\n return objectGetPrototypeOf(anObject(target));\n }\n});\n","import 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.starts-with';\nimport 'core-js/modules/es.array.join';\nimport _slicedToArray from '@babel/runtime/helpers/slicedToArray';\nimport 'core-js/modules/es.symbol';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.for-each';\nimport 'core-js/modules/es.object.get-own-property-descriptor';\nimport 'core-js/modules/es.object.get-own-property-descriptors';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport _regeneratorRuntime from '@babel/runtime/regenerator';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.every';\nimport 'core-js/modules/es.array.reduce';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.promise';\nimport 'core-js/modules/es.string.split';\nimport requestAnimationFrame from 'raf';\nimport 'core-js/modules/es.function.name';\nimport RGBColor from 'rgbcolor';\nimport 'core-js/modules/es.reflect.construct';\nimport 'core-js/modules/es.regexp.to-string';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport 'core-js/modules/es.array.from';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.some';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.iterator';\nimport 'core-js/modules/es.string.trim';\nimport _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';\nimport 'core-js/modules/es.array.index-of';\nimport 'core-js/modules/es.array.reverse';\nimport _get from '@babel/runtime/helpers/get';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.array.fill';\nimport 'core-js/modules/es.reflect.delete-property';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/web.dom-collections.iterator';\nimport 'core-js/modules/es.symbol.description';\nimport 'core-js/modules/es.symbol.iterator';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.map';\nimport 'core-js/modules/es.reflect.apply';\nimport 'core-js/modules/es.reflect.get-prototype-of';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\n * HTML-safe compress white-spaces.\n * @param str - String to compress.\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\n * HTML-safe left trim.\n * @param str - String to trim.\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\n * HTML-safe right trim.\n * @param str - String to trim.\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\n * String to numbers array.\n * @param str - Numbers string.\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/**\n * Normalize attribute name.\n * @param name - Attribute name.\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\n * Parse external URL.\n * @param url - CSS url string.\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.match(/url\\(('([^']+)'|\"([^\"]+)\"|([^'\"\\)]+))\\)/) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\n * Transform floats to integers in rgb colors.\n * @param color - Color to normalize.\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, function (num, isFloat) {\n return rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num;\n });\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 = selector.match(regex);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\n * Measure selector specificity.\n * @param selector - Selector to measure.\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\n var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);\n\n var _findSelectorMatch2 = _slicedToArray(_findSelectorMatch, 2);\n\n currentSelector = _findSelectorMatch2[0];\n delta = _findSelectorMatch2[1];\n specificity[1] += delta;\n\n var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);\n\n var _findSelectorMatch4 = _slicedToArray(_findSelectorMatch3, 2);\n\n currentSelector = _findSelectorMatch4[0];\n delta = _findSelectorMatch4[1];\n specificity[0] += delta;\n\n var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);\n\n var _findSelectorMatch6 = _slicedToArray(_findSelectorMatch5, 2);\n\n currentSelector = _findSelectorMatch6[0];\n delta = _findSelectorMatch6[1];\n specificity[1] += delta;\n\n var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);\n\n var _findSelectorMatch8 = _slicedToArray(_findSelectorMatch7, 2);\n\n currentSelector = _findSelectorMatch8[0];\n delta = _findSelectorMatch8[1];\n specificity[2] += delta;\n\n var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n\n var _findSelectorMatch10 = _slicedToArray(_findSelectorMatch9, 2);\n\n currentSelector = _findSelectorMatch10[0];\n delta = _findSelectorMatch10[1];\n specificity[1] += delta;\n\n var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);\n\n var _findSelectorMatch12 = _slicedToArray(_findSelectorMatch11, 2);\n\n currentSelector = _findSelectorMatch12[0];\n delta = _findSelectorMatch12[1];\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[\\*\\s\\+>~]/g, ' ').replace(/[#\\.]/g, ' ');\n\n var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);\n\n var _findSelectorMatch14 = _slicedToArray(_findSelectorMatch13, 2);\n\n currentSelector = _findSelectorMatch14[0];\n delta = _findSelectorMatch14[1];\n // lgtm [js/useless-assignment-to-local]\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\n * Vector magnitude.\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\n * Ratio between two vectors.\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\n * Angle between two vectors.\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\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var runtime = function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined$1,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined$1;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n stop: function () {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n }( // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports );\n\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});\n\nvar Property = /*#__PURE__*/function () {\n function Property(document, name, value) {\n _classCallCheck(this, Property);\n\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n _createClass(Property, [{\n key: \"hasValue\",\n value: function hasValue() {\n var value = this.value;\n return value !== null && value !== '' && value !== 0 && typeof value !== 'undefined';\n }\n }, {\n key: \"isString\",\n value: function isString(regexp) {\n var value = this.value;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n }, {\n key: \"isUrlDefinition\",\n value: function isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n }, {\n key: \"isPixels\",\n value: function isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case /px$/.test(asString):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n return this;\n }\n }, {\n key: \"getValue\",\n value: function getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return parseFloat(def);\n }\n\n var value = this.value;\n var n = parseFloat(value);\n\n if (this.isString(/%$/)) {\n n = n / 100.0;\n }\n\n return n;\n }\n }, {\n key: \"getString\",\n value: function 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 key: \"getColor\",\n value: function 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 key: \"getDpi\",\n value: function getDpi() {\n return 96.0; // TODO: compute?\n }\n }, {\n key: \"getRem\",\n value: function getRem() {\n return this.document.rootEmSize;\n }\n }, {\n key: \"getEm\",\n value: function getEm() {\n return this.document.emSize;\n }\n }, {\n key: \"getUnits\",\n value: function getUnits() {\n return this.getString().replace(/[0-9\\.\\-]/g, '');\n }\n }, {\n key: \"getPixels\",\n value: function 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 _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],\n _ref2 = _slicedToArray(_ref, 2),\n axis = _ref2[0],\n isFontSize = _ref2[1];\n\n var viewPort = this.document.screen.viewPort;\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 key: \"getMilliseconds\",\n value: function 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 key: \"getRadians\",\n value: function 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 key: \"getDefinition\",\n value: function getDefinition() {\n var asString = this.getString();\n var name = asString.match(/#([^\\)'\"]+)/);\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 key: \"getFillStyleDefinition\",\n value: function 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 key: \"getTextBaseline\",\n value: function getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n }, {\n key: \"addOpacity\",\n value: function 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 key: \"empty\",\n value: function empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n }]);\n\n return Property;\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\nvar ViewPort = /*#__PURE__*/function () {\n function ViewPort() {\n _classCallCheck(this, ViewPort);\n\n this.viewPorts = [];\n }\n\n _createClass(ViewPort, [{\n key: \"clear\",\n value: function clear() {\n this.viewPorts = [];\n }\n }, {\n key: \"setCurrent\",\n value: function setCurrent(width, height) {\n this.viewPorts.push({\n width: width,\n height: height\n });\n }\n }, {\n key: \"removeCurrent\",\n value: function removeCurrent() {\n this.viewPorts.pop();\n }\n }, {\n key: \"getCurrent\",\n value: function getCurrent() {\n var viewPorts = this.viewPorts;\n return viewPorts[viewPorts.length - 1];\n }\n }, {\n key: \"computeSize\",\n value: function 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 key: \"width\",\n get: function get() {\n return this.getCurrent().width;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getCurrent().height;\n }\n }]);\n\n return ViewPort;\n}();\n\nvar Point = /*#__PURE__*/function () {\n function Point(x, y) {\n _classCallCheck(this, Point);\n\n this.x = x;\n this.y = y;\n }\n\n _createClass(Point, [{\n key: \"angleTo\",\n value: function angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(transform) {\n var x = this.x,\n y = this.y;\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 key: \"parse\",\n value: function parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var _toNumbers = toNumbers(point),\n _toNumbers2 = _slicedToArray(_toNumbers, 2),\n _toNumbers2$ = _toNumbers2[0],\n x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,\n _toNumbers2$2 = _toNumbers2[1],\n y = _toNumbers2$2 === void 0 ? defaultValue : _toNumbers2$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parseScale\",\n value: function parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var _toNumbers3 = toNumbers(scale),\n _toNumbers4 = _slicedToArray(_toNumbers3, 2),\n _toNumbers4$ = _toNumbers4[0],\n x = _toNumbers4$ === void 0 ? defaultValue : _toNumbers4$,\n _toNumbers4$2 = _toNumbers4[1],\n y = _toNumbers4$2 === void 0 ? x : _toNumbers4$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parsePath\",\n value: function 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\n return Point;\n}();\n\nvar Mouse = /*#__PURE__*/function () {\n function Mouse(screen) {\n _classCallCheck(this, Mouse);\n\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = [];\n this.onClick = this.onClick.bind(this);\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n\n _createClass(Mouse, [{\n key: \"isWorking\",\n value: function isWorking() {\n return this.working;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.working) {\n return;\n }\n\n var screen = this.screen,\n onClick = this.onClick,\n onMouseMove = this.onMouseMove;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n }, {\n key: \"stop\",\n value: function 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 key: \"hasEvents\",\n value: function hasEvents() {\n return this.working && this.events.length > 0;\n }\n }, {\n key: \"runEvents\",\n value: function runEvents() {\n if (!this.working) {\n return;\n }\n\n var document = this.screen,\n events = this.events,\n eventElements = this.eventElements;\n var style = document.ctx.canvas.style;\n\n if (style) {\n style.cursor = '';\n }\n\n events.forEach(function (_ref, i) {\n var run = _ref.run;\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 key: \"checkPath\",\n value: function checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref2, i) {\n var x = _ref2.x,\n y = _ref2.y;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"checkBoundingBox\",\n value: function checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n events.forEach(function (_ref3, i) {\n var x = _ref3.x,\n y = _ref3.y;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"mapXY\",\n value: function mapXY(x, y) {\n var _this$screen = this.screen,\n window = _this$screen.window,\n ctx = _this$screen.ctx;\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 key: \"onClick\",\n value: function onClick(evt) {\n var _this$mapXY = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY.x,\n y = _this$mapXY.y;\n\n this.events.push({\n type: 'onclick',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onClick) {\n event.onClick();\n }\n }\n });\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(evt) {\n var _this$mapXY2 = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY2.x,\n y = _this$mapXY2.y;\n\n this.events.push({\n type: 'onmousemove',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onMouseMove) {\n event.onMouseMove();\n }\n }\n });\n }\n }]);\n\n return Mouse;\n}();\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch = typeof fetch !== 'undefined' ? fetch.bind(void 0) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\n\nvar Screen = /*#__PURE__*/function () {\n function Screen(ctx) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,\n _ref$window = _ref.window,\n window = _ref$window === void 0 ? defaultWindow : _ref$window;\n\n _classCallCheck(this, Screen);\n\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 _createClass(Screen, [{\n key: \"wait\",\n value: function wait(checker) {\n this.waits.push(checker);\n }\n }, {\n key: \"ready\",\n value: function ready() {\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n\n return this.readyPromise;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = this.waits.every(function (_) {\n return _();\n });\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 key: \"setDefaults\",\n value: function 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 key: \"setViewBox\",\n value: function setViewBox(_ref2) {\n var document = _ref2.document,\n ctx = _ref2.ctx,\n aspectRatio = _ref2.aspectRatio,\n width = _ref2.width,\n desiredWidth = _ref2.desiredWidth,\n height = _ref2.height,\n desiredHeight = _ref2.desiredHeight,\n _ref2$minX = _ref2.minX,\n minX = _ref2$minX === void 0 ? 0 : _ref2$minX,\n _ref2$minY = _ref2.minY,\n minY = _ref2$minY === void 0 ? 0 : _ref2$minY,\n refX = _ref2.refX,\n refY = _ref2.refY,\n _ref2$clip = _ref2.clip,\n clip = _ref2$clip === void 0 ? false : _ref2$clip,\n _ref2$clipX = _ref2.clipX,\n clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,\n _ref2$clipY = _ref2.clipY,\n clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;\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 _cleanAspectRatio$spl = cleanAspectRatio.split(' '),\n _cleanAspectRatio$spl2 = _slicedToArray(_cleanAspectRatio$spl, 2),\n aspectRatioAlign = _cleanAspectRatio$spl2[0],\n aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];\n\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 (/^xMid/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (/YMid$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (/^xMax/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (/YMax$/.test(align) && (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 key: \"start\",\n value: function start(element) {\n var _this = this;\n\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$enableRedraw = _ref3.enableRedraw,\n enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,\n _ref3$ignoreMouse = _ref3.ignoreMouse,\n ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,\n _ref3$ignoreAnimation = _ref3.ignoreAnimation,\n ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,\n _ref3$ignoreDimension = _ref3.ignoreDimensions,\n ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,\n _ref3$ignoreClear = _ref3.ignoreClear,\n ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,\n forceRedraw = _ref3.forceRedraw,\n scaleWidth = _ref3.scaleWidth,\n scaleHeight = _ref3.scaleHeight,\n offsetX = _ref3.offsetX,\n offsetY = _ref3.offsetY;\n\n var FRAMERATE = this.FRAMERATE,\n mouse = this.mouse;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise(function (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 = function 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\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 key: \"stop\",\n value: function stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n }, {\n key: \"shouldUpdate\",\n value: function shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var frameDuration = this.frameDuration;\n var shouldUpdate = this.animations.reduce(function (shouldUpdate, animation) {\n return animation.update(frameDuration) || shouldUpdate;\n }, 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 key: \"render\",\n value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var CLIENT_WIDTH = this.CLIENT_WIDTH,\n CLIENT_HEIGHT = this.CLIENT_HEIGHT,\n viewPort = this.viewPort,\n ctx = this.ctx,\n isFirstRender = this.isFirstRender;\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\n return Screen;\n}();\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch;\n\nvar defaultFetch$1 = Screen.defaultFetch;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\n\nvar Parser = /*#__PURE__*/function () {\n function Parser() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,\n _ref$DOMParser = _ref.DOMParser,\n DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;\n\n _classCallCheck(this, Parser);\n\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n _createClass(Parser, [{\n key: \"parse\",\n value: function () {\n var _parse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resource) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!/^ 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Rotate);\n\n this.type = 'rotate';\n this.angle = 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.cx = (numbers[1] || 0) + (transformOrigin[0] || 0);\n this.cy = (numbers[2] || 0) + (transformOrigin[1] || 0);\n }\n\n _createClass(Rotate, [{\n key: \"apply\",\n value: function apply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\n ctx.translate(cx, cy);\n ctx.rotate(-1.0 * angle.getRadians());\n ctx.translate(-cx, -cy);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var cx = this.cx,\n cy = this.cy,\n angle = this.angle;\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 return Rotate;\n}();\n\nvar Scale = /*#__PURE__*/function () {\n function Scale(_, scale) {\n _classCallCheck(this, Scale);\n\n this.type = 'scale';\n this.scale = 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 }\n\n _createClass(Scale, [{\n key: \"apply\",\n value: function apply(ctx) {\n var _this$scale = this.scale,\n x = _this$scale.x,\n y = _this$scale.y;\n ctx.scale(x, y || x);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var _this$scale2 = this.scale,\n x = _this$scale2.x,\n y = _this$scale2.y;\n ctx.scale(1.0 / x, 1.0 / y || x);\n }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var _this$scale3 = this.scale,\n x = _this$scale3.x,\n y = _this$scale3.y;\n point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);\n }\n }]);\n\n return Scale;\n}();\n\nvar Matrix = /*#__PURE__*/function () {\n function Matrix(_, matrix) {\n _classCallCheck(this, Matrix);\n\n this.type = 'matrix';\n this.matrix = [];\n this.matrix = toNumbers(matrix);\n }\n\n _createClass(Matrix, [{\n key: \"apply\",\n value: function apply(ctx) {\n var matrix = this.matrix;\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var matrix = this.matrix;\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 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 }\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n }]);\n\n return Matrix;\n}();\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Skew = /*#__PURE__*/function (_Matrix) {\n _inherits(Skew, _Matrix);\n\n var _super = _createSuper(Skew);\n\n function Skew(document, skew) {\n var _this;\n\n _classCallCheck(this, Skew);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skew';\n _this.angle = null;\n _this.angle = new Property(document, 'angle', skew);\n return _this;\n }\n\n return Skew;\n}(Matrix);\n\nfunction _createSuper$1(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$1()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SkewX = /*#__PURE__*/function (_Skew) {\n _inherits(SkewX, _Skew);\n\n var _super = _createSuper$1(SkewX);\n\n function SkewX(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewX);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skewX';\n _this.matrix = [1, 0, Math.tan(_this.angle.getRadians()), 1, 0, 0];\n return _this;\n }\n\n return SkewX;\n}(Skew);\n\nfunction _createSuper$2(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$2()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SkewY = /*#__PURE__*/function (_Skew) {\n _inherits(SkewY, _Skew);\n\n var _super = _createSuper$2(SkewY);\n\n function SkewY(document, skew) {\n var _this;\n\n _classCallCheck(this, SkewY);\n\n _this = _super.call(this, document, skew);\n _this.type = 'skewY';\n _this.matrix = [1, Math.tan(_this.angle.getRadians()), 0, 1, 0, 0];\n return _this;\n }\n\n return SkewY;\n}(Skew);\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 _transform$split = transform.split('('),\n _transform$split2 = _slicedToArray(_transform$split, 2),\n type = _transform$split2[0],\n value = _transform$split2[1];\n\n return [type.trim(), value.trim().replace(')', '')];\n}\n\nvar Transform = /*#__PURE__*/function () {\n function Transform(document, transform, transformOrigin) {\n var _this = this;\n\n _classCallCheck(this, Transform);\n\n this.document = document;\n this.transforms = [];\n var data = parseTransforms(transform);\n var originCoords = transformOrigin ? toNumbers(transformOrigin) : [];\n data.forEach(function (transform) {\n if (transform === 'none') {\n return;\n }\n\n var _parseTransform = parseTransform(transform),\n _parseTransform2 = _slicedToArray(_parseTransform, 2),\n type = _parseTransform2[0],\n value = _parseTransform2[1];\n\n var TransformType = Transform.transformTypes[type];\n\n if (typeof TransformType !== 'undefined') {\n _this.transforms.push(new TransformType(_this.document, value, originCoords));\n }\n });\n }\n\n _createClass(Transform, [{\n key: \"apply\",\n value: function apply(ctx) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].apply(ctx);\n }\n }\n }, {\n key: \"unapply\",\n value: function unapply(ctx) {\n var transforms = this.transforms;\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 key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n }], [{\n key: \"fromElement\",\n value: function fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n var transformOriginStyle = element.getStyle('transform-origin', false, true);\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOriginStyle.getString());\n }\n\n return null;\n }\n }]);\n\n return Transform;\n}();\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nvar Element = /*#__PURE__*/function () {\n function Element(document, node) {\n var _this = this;\n\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, Element);\n\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(function (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(function (_) {\n return _.trim();\n });\n styles.forEach(function (style) {\n if (!style) {\n return;\n }\n\n var _style$split$map = style.split(':').map(function (_) {\n return _.trim();\n }),\n _style$split$map2 = _slicedToArray(_style$split$map, 2),\n name = _style$split$map2[0],\n value = _style$split$map2[1];\n\n _this.styles[name] = new Property(document, name, value);\n });\n }\n\n var definitions = document.definitions;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getValue()]) {\n definitions[id.getValue()] = this;\n }\n }\n\n Array.from(node.childNodes).forEach(function (childNode) {\n if (childNode.nodeType === 1) {\n _this.addChild(childNode); // ELEMENT_NODE\n\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\n _createClass(Element, [{\n key: \"getAttribute\",\n value: function 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 key: \"getHrefAttribute\",\n value: function getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || /:href$/.test(key)) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n }, {\n key: \"getStyle\",\n value: function 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 && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var parent = this.parent;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle && 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 key: \"render\",\n value: function 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 key: \"setContext\",\n value: function setContext(_) {}\n }, {\n key: \"applyEffects\",\n value: function 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 key: \"clearContext\",\n value: function clearContext(_) {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.children.forEach(function (child) {\n child.render(ctx);\n });\n }\n }, {\n key: \"addChild\",\n value: function 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 key: \"matchesSelector\",\n value: function matchesSelector(selector) {\n var node = this.node;\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(function (styleClass) {\n if (\".\".concat(styleClass) === selector) {\n return true;\n }\n });\n }\n }, {\n key: \"addStylesFromStyleDefinition\",\n value: function addStylesFromStyleDefinition() {\n var _this$document = this.document,\n styles = _this$document.styles,\n stylesSpecificity = _this$document.stylesSpecificity;\n\n for (var selector in styles) {\n if (selector[0] !== '@' && 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 key: \"removeStyles\",\n value: function removeStyles(element, ignoreStyles) {\n var toRestore = ignoreStyles.reduce(function (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 [].concat(_toConsumableArray(toRestore), [[name, value]]);\n }, []);\n return toRestore;\n }\n }, {\n key: \"restoreStyles\",\n value: function restoreStyles(element, styles) {\n styles.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n value = _ref2[1];\n\n element.getStyle(name, true).setValue(value);\n });\n }\n }]);\n\n return Element;\n}();\nElement.ignoreChildTypes = ['title'];\n\nfunction _createSuper$3(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$3()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UnknownElement = /*#__PURE__*/function (_Element) {\n _inherits(UnknownElement, _Element);\n\n var _super = _createSuper$3(UnknownElement);\n\n function UnknownElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, UnknownElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n\n return _this;\n }\n\n return UnknownElement;\n}(Element);\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/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\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/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\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\nvar Font = /*#__PURE__*/function () {\n function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n _classCallCheck(this, Font);\n\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 _createClass(Font, [{\n key: \"toString\",\n value: function 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 key: \"parse\",\n value: function 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(function (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 var _part$split = part.split('/');\n\n var _part$split2 = _slicedToArray(_part$split, 1);\n\n fontSize = _part$split2[0];\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\n return Font;\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\nvar BoundingBox = /*#__PURE__*/function () {\n function BoundingBox() {\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\n _classCallCheck(this, BoundingBox);\n\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 _createClass(BoundingBox, [{\n key: \"addPoint\",\n value: function 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 key: \"addX\",\n value: function addX(x) {\n this.addPoint(x, null);\n }\n }, {\n key: \"addY\",\n value: function addY(y) {\n this.addPoint(null, y);\n }\n }, {\n key: \"addBoundingBox\",\n value: function addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var x1 = boundingBox.x1,\n y1 = boundingBox.y1,\n x2 = boundingBox.x2,\n y2 = boundingBox.y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n }, {\n key: \"sumCubic\",\n value: function 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 key: \"bezierCurveAdd\",\n value: function 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 key: \"addBezierCurve\",\n value: function 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 key: \"addQuadraticCurve\",\n value: function 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 key: \"isPointInBox\",\n value: function isPointInBox(x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this.x1;\n }\n }, {\n key: \"y\",\n get: function get() {\n return this.y1;\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.x2 - this.x1;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.y2 - this.y1;\n }\n }]);\n\n return BoundingBox;\n}();\n\nfunction _createSuper$4(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$4()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RenderedElement = /*#__PURE__*/function (_Element) {\n _inherits(RenderedElement, _Element);\n\n var _super = _createSuper$4(RenderedElement);\n\n function RenderedElement() {\n var _this;\n\n _classCallCheck(this, RenderedElement);\n\n _this = _super.apply(this, arguments);\n _this.modifiedEmSizeStack = false;\n return _this;\n }\n\n _createClass(RenderedElement, [{\n key: \"calculateOpacity\",\n value: function calculateOpacity() {\n var opacity = 1.0; // tslint:disable-next-line: no-this-assignment\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()) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n }, {\n key: \"setContext\",\n value: function 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');\n var pointOrderStyleProp = this.getStyle('paint-order');\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 }\n\n if (pointOrderStyleProp.hasValue()) {\n // ?\n ctx.paintOrder = pointOrderStyleProp.getValue();\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 if (typeof ctx.webkitLineDash !== 'undefined') {\n ctx.webkitLineDash = gaps;\n } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n ctx.webkitLineDashOffset = offset;\n } else if (typeof ctx.mozDashOffset !== 'undefined') {\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 key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(RenderedElement.prototype), \"clearContext\", this).call(this, ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n }]);\n\n return RenderedElement;\n}(Element);\n\nfunction _createSuper$5(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$5()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$5() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(TextElement, _RenderedElement);\n\n var _super = _createSuper$5(TextElement);\n\n function TextElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextElement);\n\n _this = _super.call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes);\n _this.type = 'text';\n _this.x = 0;\n _this.y = 0;\n _this.measureCache = -1;\n return _this;\n }\n\n _createClass(TextElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _get(_getPrototypeOf(TextElement.prototype), \"setContext\", this).call(this, ctx, fromMeasure);\n\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 key: \"initializeCoordinates\",\n value: function 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 key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var _this2 = this;\n\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n\n this.initializeCoordinates(ctx);\n var boundingBox = null;\n this.children.forEach(function (_, i) {\n var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getFontSize\",\n value: function getFontSize() {\n var document = this.document,\n parent = this.parent;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n }, {\n key: \"getTElementBoundingBox\",\n value: function 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 key: \"getGlyph\",\n value: function 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 glyph = font.glyphs[char][arabicForm];\n\n if (!glyph && font.glyphs[char].type === 'glyph') {\n glyph = font.glyphs[char];\n }\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 key: \"getText\",\n value: function getText() {\n return '';\n }\n }, {\n key: \"getTextFromNode\",\n value: function 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 || textNode.text || 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 key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var _this3 = this;\n\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n\n this.initializeCoordinates(ctx);\n this.children.forEach(function (_, i) {\n _this3.renderChild(ctx, _this3, _this3, i);\n });\n var mouse = this.document.screen.mouse; // 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 key: \"renderTElementChildren\",\n value: function renderTElementChildren(ctx) {\n var document = this.document,\n parent = this.parent;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var unitsPerEm = customFont.fontFace.unitsPerEm;\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 x = this.x,\n y = this.y;\n\n if (ctx.paintOrder === 'stroke') {\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n } else {\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 key: \"getAnchorDelta\",\n value: function getAnchorDelta(ctx, parent, startI) {\n var textAnchor = this.getStyle('text-anchor').getString('start');\n\n if (textAnchor !== 'start') {\n var children = parent.children;\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 key: \"adjustChildCoordinates\",\n value: function 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 key: \"getChildBoundingBox\",\n value: function getChildBoundingBox(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n child.children.forEach(function (_, i) {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n return boundingBox;\n }\n }, {\n key: \"renderChild\",\n value: function renderChild(ctx, textParent, parent, i) {\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n child.render(ctx);\n child.children.forEach(function (_, i) {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n }, {\n key: \"measureTextRecursive\",\n value: function measureTextRecursive(ctx) {\n var width = this.children.reduce(function (width, child) {\n return width + child.measureTextRecursive(ctx);\n }, this.measureText(ctx));\n return width;\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx) {\n var measureCache = this.measureCache;\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 key: \"measureTargetText\",\n value: function measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var parent = this.parent;\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\n var _ctx$measureText = ctx.measureText(targetText),\n measure = _ctx$measureText.width;\n\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n }]);\n\n return TextElement;\n}(RenderedElement);\n\nfunction _createSuper$6(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$6()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$6() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TSpanElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TSpanElement, _TextElement);\n\n var _super = _createSuper$6(TSpanElement);\n\n function TSpanElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TSpanElement);\n\n _this = _super.call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === 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 return _this;\n }\n\n _createClass(TSpanElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }]);\n\n return TSpanElement;\n}(TextElement);\n\nfunction _createSuper$7(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$7()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$7() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextNode = /*#__PURE__*/function (_TSpanElement) {\n _inherits(TextNode, _TSpanElement);\n\n var _super = _createSuper$7(TextNode);\n\n function TextNode() {\n var _this;\n\n _classCallCheck(this, TextNode);\n\n _this = _super.apply(this, arguments);\n _this.type = 'textNode';\n return _this;\n }\n\n return TextNode;\n}(TSpanElement);\n\nfunction preparePath(path) {\n var d = path.replace(/,/gm, ' ') // get rid of all commas\n // As the end of a match can also be the start of the next match, we need to run this replace twice.\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, '$1 $2') // suffix commands with spaces\n .replace(/([^\\s])([MmZzLlHhVvCcSsQqTtAa])/gm, '$1 $2') // prefix commands with spaces\n .replace(/([0-9])([+\\-])/gm, '$1 $2') // separate digits on +- signs\n // Again, we need to run this twice to find all occurances\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/(\\.[0-9]*)(\\.)/gm, '$1 $2') // separate digits when they start with a comma\n .replace(/([Aa](?:\\s+(?:[0-9]*\\.)?[0-9]+){3})\\s+([01])\\s*([01])/gm, '$1 $2 $3 '); // shorthand elliptical arc path syntax\n\n return compressSpaces(d).trim();\n}\n\nvar PathParser = /*#__PURE__*/function () {\n function PathParser(path) {\n _classCallCheck(this, PathParser);\n\n this.control = null;\n this.start = null;\n this.current = null;\n this.command = '';\n this.tokens = [];\n this.i = -1;\n this.previousCommand = '';\n this.points = [];\n this.angles = [];\n this.tokens = preparePath(path).split(' ');\n }\n\n _createClass(PathParser, [{\n key: \"reset\",\n value: function reset() {\n this.i = -1;\n this.command = '';\n this.previousCommand = '';\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 key: \"isEnd\",\n value: function isEnd() {\n var i = this.i,\n tokens = this.tokens;\n return i >= tokens.length - 1;\n }\n }, {\n key: \"isCommandOrEnd\",\n value: function isCommandOrEnd() {\n if (this.isEnd()) {\n return true;\n }\n\n var i = this.i,\n tokens = this.tokens;\n return /^[A-Za-z]$/.test(tokens[i + 1]);\n }\n }, {\n key: \"isRelativeCommand\",\n value: function isRelativeCommand() {\n switch (this.command) {\n case 'm':\n case 'l':\n case 'h':\n case 'v':\n case 'c':\n case 's':\n case 'q':\n case 't':\n case 'a':\n case 'z':\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"getToken\",\n value: function getToken() {\n this.i++;\n return this.tokens[this.i];\n }\n }, {\n key: \"getScalar\",\n value: function getScalar() {\n return parseFloat(this.getToken());\n }\n }, {\n key: \"nextCommand\",\n value: function nextCommand() {\n this.previousCommand = this.command;\n this.command = this.getToken();\n }\n }, {\n key: \"getPoint\",\n value: function getPoint() {\n var point = new Point(this.getScalar(), this.getScalar());\n return this.makeAbsolute(point);\n }\n }, {\n key: \"getAsControlPoint\",\n value: function getAsControlPoint() {\n var point = this.getPoint();\n this.control = point;\n return point;\n }\n }, {\n key: \"getAsCurrentPoint\",\n value: function getAsCurrentPoint() {\n var point = this.getPoint();\n this.current = point;\n return point;\n }\n }, {\n key: \"getReflectedControlPoint\",\n value: function getReflectedControlPoint() {\n var previousCommand = this.previousCommand.toLowerCase();\n\n if (previousCommand !== 'c' && previousCommand !== 's' && previousCommand !== 'q' && previousCommand !== 't') {\n return this.current;\n } // reflect point\n\n\n var _this$current = this.current,\n cx = _this$current.x,\n cy = _this$current.y,\n _this$control = this.control,\n ox = _this$control.x,\n oy = _this$control.y;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n }, {\n key: \"makeAbsolute\",\n value: function makeAbsolute(point) {\n if (this.isRelativeCommand()) {\n var _this$current2 = this.current,\n x = _this$current2.x,\n y = _this$current2.y;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n }, {\n key: \"addMarker\",\n value: function addMarker(point, from, priorTo) {\n var points = this.points,\n angles = this.angles; // 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 key: \"addMarkerAngle\",\n value: function addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n }, {\n key: \"getMarkerPoints\",\n value: function getMarkerPoints() {\n return this.points;\n }\n }, {\n key: \"getMarkerAngles\",\n value: function getMarkerAngles() {\n var angles = this.angles;\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 return PathParser;\n}();\n\nfunction _createSuper$8(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$8()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$8() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PathElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(PathElement, _RenderedElement);\n\n var _super = _createSuper$8(PathElement);\n\n function PathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PathElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'path';\n _this.pathParser = null;\n _this.pathParser = new PathParser(_this.getAttribute('d').getString());\n return _this;\n }\n\n _createClass(PathElement, [{\n key: \"path\",\n value: function path(ctx) {\n var pathParser = this.pathParser;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n pathParser.nextCommand();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n this.pathM(ctx, boundingBox);\n break;\n\n case 'L':\n case 'l':\n this.pathL(ctx, boundingBox);\n break;\n\n case 'H':\n case 'h':\n this.pathH(ctx, boundingBox);\n break;\n\n case 'V':\n case 'v':\n this.pathV(ctx, boundingBox);\n break;\n\n case 'C':\n case 'c':\n this.pathC(ctx, boundingBox);\n break;\n\n case 'S':\n case 's':\n this.pathS(ctx, boundingBox);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(ctx, boundingBox);\n break;\n\n case 'T':\n case 't':\n this.pathT(ctx, boundingBox);\n break;\n\n case 'A':\n case 'a':\n this.pathA(ctx, boundingBox);\n break;\n\n case 'Z':\n case 'z':\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(_) {\n return this.path();\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var pathParser = this.pathParser;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n var markers = points.map(function (point, i) {\n return [point, angles[i]];\n });\n return markers;\n }\n }, {\n key: \"renderChildren\",\n value: function 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 ctx.stroke();\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\n var _markers$ = _slicedToArray(markers[0], 2),\n point = _markers$[0],\n angle = _markers$[1];\n\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 _markers$i = _slicedToArray(markers[i], 2),\n _point = _markers$i[0],\n _angle = _markers$i[1];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var _markers$markersLastI = _slicedToArray(markers[markersLastIndex], 2),\n _point2 = _markers$markersLastI[0],\n _angle2 = _markers$markersLastI[1];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n }, {\n key: \"pathM\",\n value: function pathM(ctx, boundingBox) {\n var pathParser = this.pathParser;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _point3 = pathParser.getAsCurrentPoint();\n\n var _x = _point3.x,\n _y = _point3.y;\n pathParser.addMarker(_point3, pathParser.start);\n boundingBox.addPoint(_x, _y);\n\n if (ctx) {\n ctx.lineTo(_x, _y);\n }\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getAsCurrentPoint();\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }\n }, {\n key: \"pathH\",\n value: function pathH(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathV\",\n value: function pathV(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n pathParser.addMarker(point, current);\n pathParser.current = point;\n boundingBox.addPoint(point.x, point.y);\n\n if (ctx) {\n ctx.lineTo(point.x, point.y);\n }\n }\n }\n }, {\n key: \"pathC\",\n value: function pathC(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\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 }, {\n key: \"pathS\",\n value: function pathS(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\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 }, {\n key: \"pathQ\",\n value: function pathQ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\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 }, {\n key: \"pathT\",\n value: function pathT(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\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 }, {\n key: \"pathA\",\n value: function pathA(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0);\n var largeArcFlag = pathParser.getScalar();\n var sweepFlag = pathParser.getScalar();\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 = (largeArcFlag === 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]); // 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 } // for markers\n\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 }, {\n key: \"pathZ\",\n value: function pathZ(ctx, boundingBox) {\n var pathParser = 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 pathParser.current = pathParser.start;\n }\n }]);\n\n return PathElement;\n}(RenderedElement);\n\nfunction _createSuper$9(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$9()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$9() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SVGElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SVGElement, _RenderedElement);\n\n var _super = _createSuper$9(SVGElement);\n\n function SVGElement() {\n var _this;\n\n _classCallCheck(this, SVGElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'svg';\n _this.root = false;\n return _this;\n }\n\n _createClass(SVGElement, [{\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(SVGElement.prototype), \"clearContext\", this).call(this, ctx);\n\n this.document.screen.viewPort.removeCurrent();\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var document = this.document;\n var screen = document.screen,\n window = document.window;\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 }\n\n _get(_getPrototypeOf(SVGElement.prototype), \"setContext\", this).call(this, ctx); // 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 ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n var _screen$viewPort = screen.viewPort,\n width = _screen$viewPort.width,\n height = _screen$viewPort.height;\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.getAttribute('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);\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx: 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: minX,\n minY: minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip: clip,\n clipX: clipX,\n clipY: clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n\n }, {\n key: \"resize\",\n value: function 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 return SVGElement;\n}(RenderedElement);\n\nfunction _createSuper$a(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$a()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$a() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RectElement = /*#__PURE__*/function (_PathElement) {\n _inherits(RectElement, _PathElement);\n\n var _super = _createSuper$a(RectElement);\n\n function RectElement() {\n var _this;\n\n _classCallCheck(this, RectElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'rect';\n return _this;\n }\n\n _createClass(RectElement, [{\n key: \"path\",\n value: function path(ctx) {\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 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 key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return RectElement;\n}(PathElement);\n\nfunction _createSuper$b(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$b()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$b() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar CircleElement = /*#__PURE__*/function (_PathElement) {\n _inherits(CircleElement, _PathElement);\n\n var _super = _createSuper$b(CircleElement);\n\n function CircleElement() {\n var _this;\n\n _classCallCheck(this, CircleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'circle';\n return _this;\n }\n\n _createClass(CircleElement, [{\n key: \"path\",\n value: function 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 key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return CircleElement;\n}(PathElement);\n\nfunction _createSuper$c(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$c()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$c() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar EllipseElement = /*#__PURE__*/function (_PathElement) {\n _inherits(EllipseElement, _PathElement);\n\n var _super = _createSuper$c(EllipseElement);\n\n function EllipseElement() {\n var _this;\n\n _classCallCheck(this, EllipseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'ellipse';\n return _this;\n }\n\n _createClass(EllipseElement, [{\n key: \"path\",\n value: function 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 key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return EllipseElement;\n}(PathElement);\n\nfunction _createSuper$d(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$d()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$d() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(LineElement, _PathElement);\n\n var _super = _createSuper$d(LineElement);\n\n function LineElement() {\n var _this;\n\n _classCallCheck(this, LineElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'line';\n return _this;\n }\n\n _createClass(LineElement, [{\n key: \"getPoints\",\n value: function 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 key: \"path\",\n value: function path(ctx) {\n var _this$getPoints = this.getPoints(),\n _this$getPoints2 = _slicedToArray(_this$getPoints, 2),\n _this$getPoints2$ = _this$getPoints2[0],\n x0 = _this$getPoints2$.x,\n y0 = _this$getPoints2$.y,\n _this$getPoints2$2 = _this$getPoints2[1],\n x1 = _this$getPoints2$2.x,\n y1 = _this$getPoints2$2.y;\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 key: \"getMarkers\",\n value: function getMarkers() {\n var _this$getPoints3 = this.getPoints(),\n _this$getPoints4 = _slicedToArray(_this$getPoints3, 2),\n p0 = _this$getPoints4[0],\n p1 = _this$getPoints4[1];\n\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n }]);\n\n return LineElement;\n}(PathElement);\n\nfunction _createSuper$e(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$e()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$e() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolylineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(PolylineElement, _PathElement);\n\n var _super = _createSuper$e(PolylineElement);\n\n function PolylineElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PolylineElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'polyline';\n _this.points = [];\n _this.points = Point.parsePath(_this.getAttribute('points').getString());\n return _this;\n }\n\n _createClass(PolylineElement, [{\n key: \"path\",\n value: function path(ctx) {\n var points = this.points;\n\n var _points = _slicedToArray(points, 1),\n _points$ = _points[0],\n x0 = _points$.x,\n y0 = _points$.y;\n\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n points.forEach(function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var points = this.points;\n var lastIndex = points.length - 1;\n var markers = [];\n points.forEach(function (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 return PolylineElement;\n}(PathElement);\n\nfunction _createSuper$f(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$f()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$f() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolygonElement = /*#__PURE__*/function (_PolylineElement) {\n _inherits(PolygonElement, _PolylineElement);\n\n var _super = _createSuper$f(PolygonElement);\n\n function PolygonElement() {\n var _this;\n\n _classCallCheck(this, PolygonElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'polygon';\n return _this;\n }\n\n _createClass(PolygonElement, [{\n key: \"path\",\n value: function path(ctx) {\n var boundingBox = _get(_getPrototypeOf(PolygonElement.prototype), \"path\", this).call(this, ctx);\n\n var _this$points = _slicedToArray(this.points, 1),\n _this$points$ = _this$points[0],\n x = _this$points$.x,\n y = _this$points$.y;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n }]);\n\n return PolygonElement;\n}(PolylineElement);\n\nfunction _createSuper$g(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$g()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$g() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PatternElement = /*#__PURE__*/function (_Element) {\n _inherits(PatternElement, _Element);\n\n var _super = _createSuper$g(PatternElement);\n\n function PatternElement() {\n var _this;\n\n _classCallCheck(this, PatternElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'pattern';\n return _this;\n }\n\n _createClass(PatternElement, [{\n key: \"createPattern\",\n value: function 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 return PatternElement;\n}(Element);\n\nfunction _createSuper$h(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$h()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$h() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MarkerElement = /*#__PURE__*/function (_Element) {\n _inherits(MarkerElement, _Element);\n\n var _super = _createSuper$h(MarkerElement);\n\n function MarkerElement() {\n var _this;\n\n _classCallCheck(this, MarkerElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'marker';\n return _this;\n }\n\n _createClass(MarkerElement, [{\n key: \"render\",\n value: function render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var x = point.x,\n y = point.y;\n var orient = this.getAttribute('orient').getValue('auto');\n var markerUnits = this.getAttribute('markerUnits').getValue('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 return MarkerElement;\n}(Element);\n\nfunction _createSuper$i(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$i()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$i() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DefsElement = /*#__PURE__*/function (_Element) {\n _inherits(DefsElement, _Element);\n\n var _super = _createSuper$i(DefsElement);\n\n function DefsElement() {\n var _this;\n\n _classCallCheck(this, DefsElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'defs';\n return _this;\n }\n\n _createClass(DefsElement, [{\n key: \"render\",\n value: function render() {// NOOP\n }\n }]);\n\n return DefsElement;\n}(Element);\n\nfunction _createSuper$j(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$j()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$j() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(GElement, _RenderedElement);\n\n var _super = _createSuper$j(GElement);\n\n function GElement() {\n var _this;\n\n _classCallCheck(this, GElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'g';\n return _this;\n }\n\n _createClass(GElement, [{\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var boundingBox = new BoundingBox();\n this.children.forEach(function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n }]);\n\n return GElement;\n}(RenderedElement);\n\nfunction _createSuper$k(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$k()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$k() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GradientElement = /*#__PURE__*/function (_Element) {\n _inherits(GradientElement, _Element);\n\n var _super = _createSuper$k(GradientElement);\n\n function GradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.attributesToInherit = ['gradientUnits'];\n _this.stops = [];\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n stops = _assertThisInitialize.stops,\n children = _assertThisInitialize.children;\n\n children.forEach(function (child) {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n return _this;\n }\n\n _createClass(GradientElement, [{\n key: \"getGradientUnits\",\n value: function getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n }, {\n key: \"createGradient\",\n value: function createGradient(ctx, element, parentOpacityProp) {\n var _this2 = this;\n\n // tslint:disable-next-line: no-this-assignment\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var _stopsContainer = stopsContainer,\n stops = _stopsContainer.stops;\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(function (stop) {\n gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var document = this.document;\n var _document$screen = document.screen,\n MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,\n viewPort = _document$screen.viewPort;\n\n var _viewPort$viewPorts = _slicedToArray(viewPort.viewPorts, 1),\n rootView = _viewPort$viewPorts[0];\n\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 key: \"inheritStopContainer\",\n value: function inheritStopContainer(stopsContainer) {\n var _this3 = this;\n\n this.attributesToInherit.forEach(function (attributeToInherit) {\n if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n }, {\n key: \"addParentOpacity\",\n value: function 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 return GradientElement;\n}(Element);\n\nfunction _createSuper$l(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$l()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$l() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LinearGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(LinearGradientElement, _GradientElement);\n\n var _super = _createSuper$l(LinearGradientElement);\n\n function LinearGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, LinearGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'linearGradient';\n\n _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n\n return _this;\n }\n\n _createClass(LinearGradientElement, [{\n key: \"getGradient\",\n value: function 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 return LinearGradientElement;\n}(GradientElement);\n\nfunction _createSuper$m(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$m()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$m() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RadialGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(RadialGradientElement, _GradientElement);\n\n var _super = _createSuper$m(RadialGradientElement);\n\n function RadialGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, RadialGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'radialGradient';\n\n _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n\n return _this;\n }\n\n _createClass(RadialGradientElement, [{\n key: \"getGradient\",\n value: function 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 return RadialGradientElement;\n}(GradientElement);\n\nfunction _createSuper$n(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$n()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$n() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StopElement = /*#__PURE__*/function (_Element) {\n _inherits(StopElement, _Element);\n\n var _super = _createSuper$n(StopElement);\n\n function StopElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StopElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'stop';\n var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));\n\n var stopOpacity = _this.getStyle('stop-opacity');\n\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 return _this;\n }\n\n return StopElement;\n}(Element);\n\nfunction _createSuper$o(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$o()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$o() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateElement = /*#__PURE__*/function (_Element) {\n _inherits(AnimateElement, _Element);\n\n var _super = _createSuper$o(AnimateElement);\n\n function AnimateElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AnimateElement);\n\n _this = _super.call(this, 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(_assertThisInitialized(_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 = _this.getAttribute('values');\n\n if (_this.values.hasValue()) {\n _this.values.setValue(_this.values.getString().split(';'));\n }\n\n return _this;\n }\n\n _createClass(AnimateElement, [{\n key: \"getProperty\",\n value: function 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 key: \"calcValue\",\n value: function calcValue() {\n var initialUnits = this.initialUnits;\n\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\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 key: \"update\",\n value: function update(delta) {\n var parent = this.parent;\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 key: \"getProgress\",\n value: function getProgress() {\n var document = this.document,\n values = this.values;\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 return AnimateElement;\n}(Element);\n\nfunction _createSuper$p(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$p()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$p() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateColorElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateColorElement, _AnimateElement);\n\n var _super = _createSuper$p(AnimateColorElement);\n\n function AnimateColorElement() {\n var _this;\n\n _classCallCheck(this, AnimateColorElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateColor';\n return _this;\n }\n\n _createClass(AnimateColorElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to;\n\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(parseInt(r, 10), \", \").concat(parseInt(g, 10), \", \").concat(parseInt(b, 10), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n }]);\n\n return AnimateColorElement;\n}(AnimateElement);\n\nfunction _createSuper$q(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$q()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$q() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateTransformElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateTransformElement, _AnimateElement);\n\n var _super = _createSuper$q(AnimateTransformElement);\n\n function AnimateTransformElement() {\n var _this;\n\n _classCallCheck(this, AnimateTransformElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateTransform';\n return _this;\n }\n\n _createClass(AnimateTransformElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n var newValue = transformFrom.map(function (from, i) {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n }]);\n\n return AnimateTransformElement;\n}(AnimateElement);\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$r(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$r()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$r() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontElement = /*#__PURE__*/function (_Element) {\n _inherits(FontElement, _Element);\n\n var _super = _createSuper$r(FontElement);\n\n function FontElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'font';\n _this.glyphs = {};\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n var definitions = document.definitions;\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n children = _assertThisInitialize.children;\n\n var _iterator = _createForOfIteratorHelper(children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\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()] = _assertThisInitialized(_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 default:\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return _this;\n }\n\n _createClass(FontElement, [{\n key: \"render\",\n value: function render() {// NO RENDER\n }\n }]);\n\n return FontElement;\n}(Element);\n\nfunction _createSuper$s(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$s()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$s() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontFaceElement = /*#__PURE__*/function (_Element) {\n _inherits(FontFaceElement, _Element);\n\n var _super = _createSuper$s(FontFaceElement);\n\n function FontFaceElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontFaceElement);\n\n _this = _super.call(this, 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 return _this;\n }\n\n return FontFaceElement;\n}(Element);\n\nfunction _createSuper$t(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$t()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$t() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MissingGlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(MissingGlyphElement, _PathElement);\n\n var _super = _createSuper$t(MissingGlyphElement);\n\n function MissingGlyphElement() {\n var _this;\n\n _classCallCheck(this, MissingGlyphElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'missing-glyph';\n _this.horizAdvX = 0;\n return _this;\n }\n\n return MissingGlyphElement;\n}(PathElement);\n\nfunction _createSuper$u(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$u()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$u() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(GlyphElement, _PathElement);\n\n var _super = _createSuper$u(GlyphElement);\n\n function GlyphElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GlyphElement);\n\n _this = _super.call(this, 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 return _this;\n }\n\n return GlyphElement;\n}(PathElement);\n\nfunction _createSuper$v(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$v()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$v() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TRefElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TRefElement, _TextElement);\n\n var _super = _createSuper$v(TRefElement);\n\n function TRefElement() {\n var _this;\n\n _classCallCheck(this, TRefElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'tref';\n return _this;\n }\n\n _createClass(TRefElement, [{\n key: \"getText\",\n value: function 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 return TRefElement;\n}(TextElement);\n\nfunction _createSuper$w(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$w()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$w() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AElement = /*#__PURE__*/function (_TextElement) {\n _inherits(AElement, _TextElement);\n\n var _super = _createSuper$w(AElement);\n\n function AElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'a';\n var childNodes = node.childNodes;\n var firstChild = childNodes[0];\n var hasText = childNodes.length > 0 && Array.from(childNodes).every(function (node) {\n return node.nodeType === 3;\n });\n _this.hasText = hasText;\n _this.text = hasText ? _this.getTextFromNode(firstChild) : '';\n return _this;\n }\n\n _createClass(AElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n _get(_getPrototypeOf(AElement.prototype), \"renderChildren\", this).call(this, ctx);\n\n var document = this.document,\n x = this.x,\n y = this.y;\n var mouse = document.screen.mouse;\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 key: \"onClick\",\n value: function onClick() {\n var window = this.document.window;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n }]);\n\n return AElement;\n}(TextElement);\n\nfunction _createForOfIteratorHelper$1(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray$1(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\n\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$x(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$x()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$x() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextPathElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TextPathElement, _TextElement);\n\n var _super = _createSuper$x(TextPathElement);\n\n function TextPathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextPathElement);\n\n _this = _super.call(this, 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\n var pathElement = _this.getHrefAttribute().getDefinition();\n\n _this.text = _this.getTextFromNode();\n _this.dataArray = _this.parsePathData(pathElement);\n return _this;\n }\n\n _createClass(TextPathElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var dataArray = this.dataArray;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n dataArray.forEach(function (_ref) {\n var command = _ref.command,\n points = _ref.points;\n\n switch (command) {\n case 'L':\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case 'M':\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case 'C':\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 'Q':\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case 'A':\n {\n var cx = points[0];\n var cy = points[1];\n var rx = points[2];\n var ry = points[3];\n var theta = points[4];\n var dTheta = points[5];\n var psi = points[6];\n var fs = points[7];\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 'z':\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n }, {\n key: \"renderChildren\",\n value: function 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 glyphInfo = this.glyphInfo;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n glyphInfo.forEach(function (glyph, i) {\n var p0 = glyph.p0,\n p1 = glyph.p1,\n partialText = glyph.text;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(glyphInfo[i].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 key: \"getLetterSpacingAt\",\n value: function getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n }, {\n key: \"findSegmentToFitChar\",\n value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, 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 segment = {\n p0: this.getEquidistantPointOnPath(offset, splineStep),\n p1: this.getEquidistantPointOnPath(offset + glyphWidth, splineStep)\n };\n offset += glyphWidth;\n return {\n offset: offset,\n segment: segment\n };\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx, text) {\n var measuresCache = this.measuresCache;\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 key: \"setTextData\",\n value: function setTextData(ctx) {\n var _this2 = this;\n\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 = toNumbers(this.parent.getAttribute('dx').getString('0'));\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(function (acc, cur) {\n return acc + cur || 0;\n }, 0);\n this.textWidth = this.measureText(ctx);\n this.textHeight = this.getFontSize();\n var textFullWidth = Math.max(this.textWidth + dxSum, 0);\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(function (char, i) {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, char, i),\n nextOffset = _this2$findSegmentToF.offset,\n segment = _this2$findSegmentToF.segment;\n\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n }\n\n var width = _this2.getLineLength(segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y); // 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\n\n var kern = 0; // placeholder for future implementation\n\n var midpoint = _this2.getPointOnLine(kern + width / 2.0, segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y);\n\n var rotation = Math.atan2(segment.p1.y - segment.p0.y, segment.p1.x - segment.p0.x);\n\n _this2.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation: rotation\n });\n });\n }\n }, {\n key: \"parsePathData\",\n value: function parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var pathParser = path.pathParser;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var current = pathParser.current;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var cmd = '';\n var points = [];\n pathParser.nextCommand();\n var upperCommand = pathParser.command.toUpperCase();\n\n switch (pathParser.command) {\n case 'M':\n case 'm':\n cmd = this.pathM(pathParser, points);\n break;\n\n case 'L':\n case 'l':\n cmd = this.pathL(pathParser, points);\n break;\n\n case 'H':\n case 'h':\n cmd = this.pathH(pathParser, points);\n break;\n\n case 'V':\n case 'v':\n cmd = this.pathV(pathParser, points);\n break;\n\n case 'C':\n case 'c':\n this.pathC(pathParser, points);\n break;\n\n case 'S':\n case 's':\n cmd = this.pathS(pathParser, points);\n break;\n\n case 'Q':\n case 'q':\n this.pathQ(pathParser, points);\n break;\n\n case 'T':\n case 't':\n cmd = this.pathT(pathParser, points);\n break;\n\n case 'A':\n case 'a':\n points = this.pathA(pathParser);\n break;\n\n case 'Z':\n case 'z':\n pathParser.current = pathParser.start;\n break;\n }\n\n if (upperCommand !== 'Z') {\n pathCommands.push({\n command: cmd || upperCommand,\n points: points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, cmd || upperCommand, points)\n });\n } else {\n pathCommands.push({\n command: 'z',\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n }, {\n key: \"pathM\",\n value: function pathM(pathParser, points) {\n var p = pathParser.getAsCurrentPoint(); // pathParser.addMarker(p);\n\n points.push(p.x, p.y);\n pathParser.start = pathParser.current;\n\n while (!pathParser.isCommandOrEnd()) {\n var _p = pathParser.getAsCurrentPoint();\n\n points.push(_p.x, _p.y);\n return 'L';\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var p = pathParser.getAsCurrentPoint();\n points.push(p.x, p.y);\n }\n\n return 'L';\n }\n }, {\n key: \"pathH\",\n value: function pathH(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point((pathParser.isRelativeCommand() ? current.x : 0) + pathParser.getScalar(), current.y);\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathV\",\n value: function pathV(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current;\n var point = new Point(current.x, (pathParser.isRelativeCommand() ? current.y : 0) + pathParser.getScalar());\n points.push(point.x, point.y);\n pathParser.current = point;\n }\n\n return 'L';\n }\n }, {\n key: \"pathC\",\n value: function pathC(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'C';\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getAsControlPoint();\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(pathParser, points) {\n while (!pathParser.isCommandOrEnd()) {\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n\n return 'Q';\n }\n }, {\n key: \"pathA\",\n value: function pathA(pathParser) {\n while (!pathParser.isCommandOrEnd()) {\n var current = pathParser.current; // x1, y1\n\n var rx = pathParser.getScalar();\n var ry = pathParser.getScalar();\n var xAxisRotation = pathParser.getScalar() * (Math.PI / 180.0); // φ\n\n var largeArcFlag = pathParser.getScalar(); // fA\n\n var sweepFlag = pathParser.getScalar(); // fS\n\n var currentPoint = pathParser.getAsCurrentPoint(); // x2, y2\n // 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 = (largeArcFlag === 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 if (sweepFlag === 0 && ad > 0) {\n ad = ad - 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad = ad + 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rx, ry, a1, ad, xAxisRotation, sweepFlag];\n }\n }\n }, {\n key: \"calcLength\",\n value: function calcLength(x, y, cmd, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (cmd) {\n case 'L':\n return this.getLineLength(x, y, points[0], points[1]);\n\n case 'C':\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 'Q':\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 'A':\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 return 0;\n }\n }, {\n key: \"getPointOnLine\",\n value: function 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 = 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 key: \"getPointOnPath\",\n value: function 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 dataArray = this.dataArray;\n\n var _iterator = _createForOfIteratorHelper$1(dataArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var pathCmd = _step.value;\n\n if (pathCmd && (pathCmd.pathLength < 0.00005 || cumulativePathLength + pathCmd.pathLength + 0.00005 < distance)) {\n cumulativePathLength += pathCmd.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (pathCmd.command) {\n case 'L':\n p = this.getPointOnLine(delta, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.start.x, pathCmd.start.y);\n break;\n\n case 'A':\n var start = pathCmd.points[4]; // 4 = theta\n\n var dTheta = pathCmd.points[5]; // 5 = dTheta\n\n var end = pathCmd.points[4] + dTheta;\n currentT = start + delta / pathCmd.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\n break;\n\n case 'C':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\n break;\n\n case 'Q':\n currentT = delta / pathCmd.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\n break;\n\n default:\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n }\n }, {\n key: \"getLineLength\",\n value: function getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n }, {\n key: \"getPathLength\",\n value: function getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce(function (length, command) {\n return command.pathLength > 0 ? length + command.pathLength : length;\n }, 0);\n }\n\n return this.pathLength;\n }\n }, {\n key: \"getPointOnCubicBezier\",\n value: function 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: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnQuadraticBezier\",\n value: function 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: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnEllipticalArc\",\n value: function 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 key: \"buildEquidistantCache\",\n value: function 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: step,\n precision: 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 key: \"getEquidistantPointOnPath\",\n value: function 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 return TextPathElement;\n}(TextElement);\n\nfunction _createSuper$y(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$y()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$y() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar ImageElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(ImageElement, _RenderedElement);\n\n var _super = _createSuper$y(ImageElement);\n\n function ImageElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, ImageElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'image';\n _this.loaded = false;\n\n var href = _this.getHrefAttribute().getString();\n\n if (!href) {\n return _possibleConstructorReturn(_this);\n }\n\n var isSvg = /\\.svg$/.test(href);\n document.images.push(_assertThisInitialized(_this));\n\n if (!isSvg) {\n _this.loadImage(href);\n } else {\n _this.loadSvg(href);\n }\n\n _this.isSvg = isSvg;\n return _this;\n }\n\n _createClass(ImageElement, [{\n key: \"loadImage\",\n value: function () {\n var _loadImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(href) {\n var image;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return this.document.createImage(href);\n\n case 3:\n image = _context.sent;\n this.image = image;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context.t0);\n\n case 10:\n this.loaded = true;\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function loadImage(_x) {\n return _loadImage.apply(this, arguments);\n }\n\n return loadImage;\n }()\n }, {\n key: \"loadSvg\",\n value: function () {\n var _loadSvg = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(href) {\n var response, svg;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return this.document.fetch(href);\n\n case 3:\n response = _context2.sent;\n _context2.next = 6;\n return response.text();\n\n case 6:\n svg = _context2.sent;\n this.image = svg;\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context2.t0);\n\n case 13:\n this.loaded = true;\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 10]]);\n }));\n\n function loadSvg(_x2) {\n return _loadSvg.apply(this, arguments);\n }\n\n return loadSvg;\n }()\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n image = this.image,\n loaded = this.loaded;\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\n if (this.isSvg) {\n document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: x,\n offsetY: y,\n scaleWidth: width,\n scaleHeight: height\n }).render();\n } else {\n var _image = this.image;\n ctx.translate(x, y);\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: width,\n desiredWidth: _image.width,\n height: 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 key: \"getBoundingBox\",\n value: function 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 return ImageElement;\n}(RenderedElement);\n\nfunction _createSuper$z(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$z()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$z() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SymbolElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SymbolElement, _RenderedElement);\n\n var _super = _createSuper$z(SymbolElement);\n\n function SymbolElement() {\n var _this;\n\n _classCallCheck(this, SymbolElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'symbol';\n return _this;\n }\n\n _createClass(SymbolElement, [{\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return SymbolElement;\n}(RenderedElement);\n\nvar SVGFontLoader = /*#__PURE__*/function () {\n function SVGFontLoader(document) {\n _classCallCheck(this, SVGFontLoader);\n\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n _createClass(SVGFontLoader, [{\n key: \"load\",\n value: function () {\n var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(fontFamily, url) {\n var document, svgDocument, fonts;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n document = this.document;\n _context.next = 4;\n return document.canvg.parser.load(url);\n\n case 4:\n svgDocument = _context.sent;\n fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach(function (fontNode) {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), _context.t0);\n\n case 12:\n this.loaded = true;\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 9]]);\n }));\n\n function load(_x, _x2) {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return SVGFontLoader;\n}();\n\nfunction _createSuper$A(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$A()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$A() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StyleElement = /*#__PURE__*/function (_Element) {\n _inherits(StyleElement, _Element);\n\n var _super = _createSuper$A(StyleElement);\n\n function StyleElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StyleElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'style';\n var css = compressSpaces(Array.from(node.childNodes).map(function (_) {\n return _.data;\n }).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(function (_) {\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(function (_) {\n var cssClass = _.trim();\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n cssProps.forEach(function (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(function (src) {\n if (src.indexOf('format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n return _this;\n }\n\n return StyleElement;\n}(Element);\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nfunction _createSuper$B(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$B()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$B() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UseElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(UseElement, _RenderedElement);\n\n var _super = _createSuper$B(UseElement);\n\n function UseElement() {\n var _this;\n\n _classCallCheck(this, UseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'use';\n return _this;\n }\n\n _createClass(UseElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n _get(_getPrototypeOf(UseElement.prototype), \"setContext\", this).call(this, ctx);\n\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 key: \"path\",\n value: function path(ctx) {\n var element = this.element;\n\n if (element) {\n element.path(ctx);\n }\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n element = this.element;\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;\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 key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var element = this.element;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n }, {\n key: \"elementTransform\",\n value: function elementTransform() {\n var document = this.document,\n element = this.element;\n return Transform.fromElement(document, element);\n }\n }, {\n key: \"element\",\n get: function get() {\n if (!this._element) {\n this._element = this.getHrefAttribute().getDefinition();\n }\n\n return this._element;\n }\n }]);\n\n return UseElement;\n}(RenderedElement);\n\nfunction _createSuper$C(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$C()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$C() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction imGet(img, x, y, width, _, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _, 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 * (mi < 0 ? v - 255 : v);\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nvar FeColorMatrixElement = /*#__PURE__*/function (_Element) {\n _inherits(FeColorMatrixElement, _Element);\n\n var _super = _createSuper$C(FeColorMatrixElement);\n\n function FeColorMatrixElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeColorMatrixElement);\n\n _this = _super.call(this, 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 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 break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\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 break;\n }\n\n case 'luminanceToAlpha':\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 break;\n }\n\n _this.matrix = matrix;\n _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();\n return _this;\n }\n\n _createClass(FeColorMatrixElement, [{\n key: \"apply\",\n value: function apply(ctx, _, __, width, height) {\n // assuming x==0 && y==0 for now\n var includeOpacity = this.includeOpacity,\n matrix = this.matrix;\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 = ng = 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 return FeColorMatrixElement;\n}(Element);\n\nfunction _createSuper$D(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$D()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$D() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MaskElement = /*#__PURE__*/function (_Element) {\n _inherits(MaskElement, _Element);\n\n var _super = _createSuper$D(MaskElement);\n\n function MaskElement() {\n var _this;\n\n _classCallCheck(this, MaskElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'mask';\n return _this;\n }\n\n _createClass(MaskElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n var document = this.document; // 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(function (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 key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return MaskElement;\n}(Element);\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nfunction _createSuper$E(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$E()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$E() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar noop = function noop() {};\n\nvar ClipPathElement = /*#__PURE__*/function (_Element) {\n _inherits(ClipPathElement, _Element);\n\n var _super = _createSuper$E(ClipPathElement);\n\n function ClipPathElement() {\n var _this;\n\n _classCallCheck(this, ClipPathElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'clipPath';\n return _this;\n }\n\n _createClass(ClipPathElement, [{\n key: \"apply\",\n value: function apply(ctx) {\n var document = this.document;\n var contextProto = Reflect.getPrototypeOf(ctx);\n var beginPath = ctx.beginPath,\n closePath = ctx.closePath;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach(function (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 key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return ClipPathElement;\n}(Element);\n\nfunction _createSuper$F(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$F()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$F() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FilterElement = /*#__PURE__*/function (_Element) {\n _inherits(FilterElement, _Element);\n\n var _super = _createSuper$F(FilterElement);\n\n function FilterElement() {\n var _this;\n\n _classCallCheck(this, FilterElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'filter';\n return _this;\n }\n\n _createClass(FilterElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n // render as temp svg\n var document = this.document,\n children = this.children;\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(function (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(function (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 key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return FilterElement;\n}(Element);\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nfunction _createSuper$G(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$G()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$G() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeDropShadowElement = /*#__PURE__*/function (_Element) {\n _inherits(FeDropShadowElement, _Element);\n\n var _super = _createSuper$G(FeDropShadowElement);\n\n function FeDropShadowElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeDropShadowElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feDropShadow';\n\n _this.addStylesFromStyleDefinition();\n\n return _this;\n }\n\n _createClass(FeDropShadowElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeDropShadowElement;\n}(Element);\n\nfunction _createSuper$H(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$H()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$H() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeMorphologyElement = /*#__PURE__*/function (_Element) {\n _inherits(FeMorphologyElement, _Element);\n\n var _super = _createSuper$H(FeMorphologyElement);\n\n function FeMorphologyElement() {\n var _this;\n\n _classCallCheck(this, FeMorphologyElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feMorphology';\n return _this;\n }\n\n _createClass(FeMorphologyElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeMorphologyElement;\n}(Element);\n\nfunction _createSuper$I(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$I()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$I() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeCompositeElement = /*#__PURE__*/function (_Element) {\n _inherits(FeCompositeElement, _Element);\n\n var _super = _createSuper$I(FeCompositeElement);\n\n function FeCompositeElement() {\n var _this;\n\n _classCallCheck(this, FeCompositeElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feComposite';\n return _this;\n }\n\n _createClass(FeCompositeElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeCompositeElement;\n}(Element);\n\nfunction _createSuper$J(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$J()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$J() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeGaussianBlurElement = /*#__PURE__*/function (_Element) {\n _inherits(FeGaussianBlurElement, _Element);\n\n var _super = _createSuper$J(FeGaussianBlurElement);\n\n function FeGaussianBlurElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeGaussianBlurElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feGaussianBlur';\n _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());\n _this.extraFilterDistance = _this.blurRadius;\n return _this;\n }\n\n _createClass(FeGaussianBlurElement, [{\n key: \"apply\",\n value: function apply(ctx, x, y, width, height) {\n var document = this.document,\n blurRadius = this.blurRadius;\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 return FeGaussianBlurElement;\n}(Element);\n\nfunction _createSuper$K(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$K()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$K() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TitleElement = /*#__PURE__*/function (_Element) {\n _inherits(TitleElement, _Element);\n\n var _super = _createSuper$K(TitleElement);\n\n function TitleElement() {\n var _this;\n\n _classCallCheck(this, TitleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'title';\n return _this;\n }\n\n return TitleElement;\n}(Element);\n\nfunction _createSuper$L(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct$L()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$L() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DescElement = /*#__PURE__*/function (_Element) {\n _inherits(DescElement, _Element);\n\n var _super = _createSuper$L(DescElement);\n\n function DescElement() {\n var _this;\n\n _classCallCheck(this, DescElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'desc';\n return _this;\n }\n\n return DescElement;\n}(Element);\n\nvar elementTypes = {\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(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\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( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(src) {\n var anonymousCrossOrigin,\n image,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n anonymousCrossOrigin = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n image.onload = function () {\n resolve(image);\n };\n\n image.onerror = function () {\n reject();\n };\n\n image.src = src;\n }));\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _createImage.apply(this, arguments);\n}\n\nvar Document = /*#__PURE__*/function () {\n function Document(canvg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$rootEmSize = _ref.rootEmSize,\n rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,\n _ref$emSize = _ref.emSize,\n emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,\n _ref$createCanvas = _ref.createCanvas,\n createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,\n _ref$createImage = _ref.createImage,\n createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage,\n anonymousCrossOrigin = _ref.anonymousCrossOrigin;\n\n _classCallCheck(this, Document);\n\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 _createClass(Document, [{\n key: \"bindCreateImage\",\n value: function bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return function (source, forceAnonymousCrossOrigin) {\n return createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n };\n }\n\n return createImage;\n }\n }, {\n key: \"popEmSize\",\n value: function popEmSize() {\n var emSizeStack = this.emSizeStack;\n emSizeStack.pop();\n }\n }, {\n key: \"getUniqueId\",\n value: function getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n }, {\n key: \"isImagesLoaded\",\n value: function isImagesLoaded() {\n return this.images.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"isFontsLoaded\",\n value: function isFontsLoaded() {\n return this.fonts.every(function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"createDocumentElement\",\n value: function 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 key: \"createElement\",\n value: function 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 key: \"createTextNode\",\n value: function createTextNode(node) {\n return new TextNode(this, node);\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(config) {\n this.screen.setViewBox(_objectSpread({\n document: this\n }, config));\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.screen.window;\n }\n }, {\n key: \"fetch\",\n get: function get() {\n return this.screen.fetch;\n }\n }, {\n key: \"ctx\",\n get: function get() {\n return this.screen.ctx;\n }\n }, {\n key: \"emSize\",\n get: function get() {\n var emSizeStack = this.emSizeStack;\n return emSizeStack[emSizeStack.length - 1];\n },\n set: function set(value) {\n var emSizeStack = this.emSizeStack;\n emSizeStack.push(value);\n }\n }]);\n\n return Document;\n}();\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elementTypes;\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/**\n * SVG renderer on canvas.\n */\n\nvar Canvg = /*#__PURE__*/function () {\n /**\n * Main constructor.\n * @param ctx - Rendering context.\n * @param svg - SVG Document.\n * @param options - Rendering options.\n */\n function Canvg(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, Canvg);\n\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 /**\n * Create Canvg isntance from SVG source string or URL.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n */\n\n\n _createClass(Canvg, [{\n key: \"fork\",\n\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n */\n value: function fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"forkString\",\n value: function forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread$1({}, this.options, {}, options));\n }\n /**\n * Document is ready promise.\n */\n\n }, {\n key: \"ready\",\n value: function ready() {\n return this.screen.ready();\n }\n /**\n * Document is ready value.\n */\n\n }, {\n key: \"isReady\",\n value: function isReady() {\n return this.screen.isReady();\n }\n /**\n * Render only first frame, ignoring animations and mouse.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"render\",\n value: function () {\n var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var options,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n this.start(_objectSpread$1({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n _context.next = 4;\n return this.ready();\n\n case 4:\n this.stop();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n /**\n * Start rendering.\n * @param options - Render options.\n */\n\n }, {\n key: \"start\",\n value: function start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var documentElement = this.documentElement,\n screen = this.screen,\n baseOptions = this.options;\n screen.start(documentElement, _objectSpread$1({\n enableRedraw: true\n }, baseOptions, {}, options));\n }\n /**\n * Stop rendering.\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.screen.stop();\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n\n }, {\n key: \"resize\",\n value: function 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 key: \"from\",\n value: function () {\n var _from = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(ctx, svg) {\n var options,\n parser,\n svgDocument,\n _args2 = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};\n parser = new Parser(options);\n _context2.next = 4;\n return parser.parse(svg);\n\n case 4:\n svgDocument = _context2.sent;\n return _context2.abrupt(\"return\", new Canvg(ctx, svgDocument, options));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function from(_x, _x2) {\n return _from.apply(this, arguments);\n }\n\n return from;\n }()\n /**\n * Create Canvg isntance from SVG source string.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n */\n\n }, {\n key: \"fromString\",\n value: function 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 }]);\n\n return Canvg;\n}();\n\n/**\n * Options preset for `OffscreenCanvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n */\nfunction offscreen() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n DOMParserFallback = _ref.DOMParser;\n\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas: function createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n createImage: function createImage(url) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var response, blob, img;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch(url);\n\n case 2:\n response = _context.sent;\n _context.next = 5;\n return response.blob();\n\n case 5:\n blob = _context.sent;\n _context.next = 8;\n return createImageBitmap(blob);\n\n case 8:\n img = _context.sent;\n return _context.abrupt(\"return\", img);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\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/**\n * Options preset for `node-canvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n * @param config.canvas - `node-canvas` exports.\n * @param config.fetch - WHATWG-compatible `fetch` function.\n */\nfunction node(_ref) {\n var DOMParser = _ref.DOMParser,\n canvas = _ref.canvas,\n fetch = _ref.fetch;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParser,\n fetch: fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\n\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJfaW52b2tlIiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJvYmoiLCJhcmciLCJ0eXBlIiwiY2FsbCIsImVyciIsIkdlblN0YXRlU3VzcGVuZGVkU3RhcnQiLCJHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkIiwiR2VuU3RhdGVFeGVjdXRpbmciLCJHZW5TdGF0ZUNvbXBsZXRlZCIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImNvbnN0cnVjdG9yIiwiZGlzcGxheU5hbWUiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJfX2F3YWl0IiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwiaW52b2tlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY29yZCIsInJlc3VsdCIsInZhbHVlIiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiZW5xdWV1ZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsIm5leHQiLCJkb25lIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwidG9TdHJpbmciLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImtleXMiLCJvYmplY3QiLCJrZXkiLCJyZXZlcnNlIiwibGVuZ3RoIiwicG9wIiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwiaSIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdEVudHJ5Iiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJtb2R1bGUiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJhY2NpZGVudGFsU3RyaWN0TW9kZSIsIkZ1bmN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9\n","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n // eslint-disable-next-line es-x/no-reflect -- required for testing\n Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n apply: function apply(target, thisArgument, argumentsList) {\n return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\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","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n/* eslint-disable es-x/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","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 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","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n"],"sourceRoot":""}