{"version":3,"sources":["webpack:///./src/assets/SlnDesign/text.png","webpack:///./src/assets/SlnDesign/shape.png","webpack:///./node_modules/@antv/x6-plugin-export/es/api.js","webpack:///./node_modules/@antv/x6-plugin-export/es/index.js","webpack:///./src/views/SystemDesign/dragOrderDesign/edit.vue?4c09","webpack:///src/views/SystemDesign/dragOrderDesign/edit.vue","webpack:///./src/views/SystemDesign/dragOrderDesign/edit.vue?d372","webpack:///./src/views/SystemDesign/dragOrderDesign/edit.vue","webpack:///./src/views/SystemDesign/dragOrderDesign/edit.vue?e489","webpack:///./src/assets/SlnDesign/checkOrder.png","webpack:///./src/assets/SlnDesign/next0.png","webpack:///./node_modules/rgbcolor/index.js","webpack:///./node_modules/stackblur-canvas/dist/stackblur-es.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/canvg/dist/index.js","webpack:///./src/assets/SlnDesign/save.png","webpack:///./src/assets/SlnDesign/next.png","webpack:///./src/assets/SlnDesign/back.png","webpack:///./src/assets/SlnDesign/return.png","webpack:///./src/assets/SlnDesign/upload.png","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/svg-pathdata/lib/SVGPathData.module.js","webpack:///./src/assets/SlnDesign/return0.png","webpack:///./src/assets/SlnDesign/rulers.png"],"names":["module","exports","prototype","toSVG","callback","options","instance","this","getPlugin","toPNG","toJPEG","exportPNG","fileName","exportJPEG","exportSVG","__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","super","name","graph","view","dataUri","downloadDataUri","svg","svgToDataUrl","notify","rawSVG","vSVG","create","clone","clonedSVG","node","vStage","findOne","prefixClassName","viewBox","graphToLocal","getContentBBox","dimension","preserveDimensions","size","attr","width","height","removeAttribute","x","y","join","copyStyles","document","ownerDocument","raws","Array","from","querySelectorAll","clones","styleSheetCount","styleSheets","styleSheetsCopy","k","disabled","defaultComputedStyles","forEach","elem","index","computedStyle","window","getComputedStyle","defaultComputedStyle","keys","property","getPropertyValue","copy","customStyles","customStyle","isNumber","css","stylesheet","cDATASection","implementation","createDocument","createCDATASection","prepend","type","format","beforeSerialize","ret","call","SVGSVGElement","XMLSerializer","serializeToString","replace","serializeImages","deferrals","find","map","vImage","Promise","resolve","url","imageToDataUri","err","all","then","padding","normalizeSides","left","right","top","bottom","expanding","scale","moveAndExpand","rawSize","ratio","parseFloat","Number","isFinite","Math","max","round","imgDataCanvas","createElement","context2D","getContext","fillStyle","fillRect","data","getImageData","Error","img","Image","onload","canvas","context","backgroundColor","drawImage","toDataURL","quality","error","src","encodeURIComponent","assign","args","trigger","off","dispose","render","_vm","_h","$createElement","_c","_self","directives","rawName","value","expression","modifiers","staticClass","staticStyle","editOrderNameState","_e","on","$event","_v","_s","editOrderData","attrs","model","$$v","$set","canUndo","onUndo","canRedo","onRedo","addShapeState","addShape","addTextState","openAddTextDialog","exitDesign","exportImage","openSaveDesignDialog","lang","thick","rulerWidth","rulerHeight","startX","startY","lines","h","v","beginState","floorDialogVisiable","isToggle","ref","filteredFloorList","handleCurrentChange","scopedSlots","_u","fn","row","fileUrl","delFloor","roomDialogVisiable","updateKey","roomListData","defaultProps","handleNodeClick","isRoot","thumbImage","label","children","delRoom","form","typeSelectChange","_l","item","brandSelectChange","nativeOn","indexOf","_k","keyCode","searchProduct","apply","productList","startDrag","productPrice","productName","attributeChange","total","moreListData","changeRulerState","scaleBtnState","showScaleBtn","scaleReduceChange","scaleAddChange","selectScaleState","canvasScale","selectScaleChange","addTextDialogVisible","inputAddTexts","slot","addText","createFloorData","class","hide","fileList","uploadImgUrl","handleExceed","handleUploadSuccess","handleUploadError","handleBeforeUpload","uploadProcess","file","handlePictureCardPreview","imageDisabled","handleRemove","uploadDialogVisible","dialogImageUrl","addNewFloor","createRoomName","addNewRoom","saveDesignDialogVisible","designActiveName","roomProductList","element","val","changeProductNumber","scope","DeleteNowProduct","AllProductList","allproductPrice","closeSaveDialog","editNewdragOrder","SpecDialogVisible","nowSelectProduct","editNowProduct","staticRenderFns","props","loading","OrderDialogVisiable","remark","floors","OrderFormRules","fileType","floorImageUrl","dnd","parentNode","childNode","visable","floorList","nowSelectFloor","rooms","nowSelectRoom","products","jsonData","proTypeOption","proBrandOption","pageIndex","pageSize","keyWorlds","ProductBrandId","ProductTypeId","SupplierId","printDesignDialogVisible","oldJsonData","oldPosition","oldPositionList","interval","timerjsonData","redoState","undoState","deleteCellList","deleteProList","isShowRuler","scaleOptions","copyNodeId","created","getInfoById","getProductsData","getProductTypeList","getProductBrandList","components","SketchRule","computed","filter","beforeMount","mounted","init","beforeDestroy","clearInterval","methods","updateDimensions","$el","querySelector","clientWidth","clientHeight","toFixed","zoomTo","newScale","console","log","oldScale","visableHandel","prop","getJsonData","json","toJSON","undo","redo","body","fill","stroke","strokeWidth","shape","commonAttrs","push","inNode","addChild","JSON","stringify","floor","text","angle","returnOrderPage","$router","res","code","$message","msg","lastIndexOf","fileExtension","slice","isImg","some","percentage","isDelete","setInterval","setTimeout","$confirm","confirmButtonText","cancelButtonText","room","hasOwnProperty","level","id","product","dragOrderFloorId","cells","isArray","setChildren","dragOrderRoomId","cellId","child","rChildIndex","splice","renderContent","cleanHistory","getRoomList","parse","getProductList","getTypeProductList","productBrandName","info1","productTypeName","info2","productId","arrayData","allPrice","number","arrayList","pdata","productModel","modelName","productSpec","nowFloorJson","productNumber","productChild","timerHandler","watch","newValue","component","color_string","ok","alpha","charAt","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","re","example","process","bits","parseInt","processor","exec","channels","g","b","isNaN","toRGB","toRGBA","toHex","toString","getHelpXML","examples","j","sc","xml","setAttribute","list_item","list_color","RGBColor","example_div","style","cssText","appendChild","createTextNode","list_item_value","e","_typeof","obj","Symbol","iterator","constructor","_classCallCheck","Constructor","TypeError","mulTable","shgTable","getImageDataFromCanvas","topX","topY","getElementById","processCanvasRGBA","radius","imageData","processImageDataRGBA","putImageData","stackEnd","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","next","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","a","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","p","rbs","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","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","now","hr","uptime","Date","getTime","offscreen","DOMParser","DOMParserFallback","preset","ignoreAnimation","ignoreMouse","OffscreenCanvas","response","fetch","blob","createImageBitmap","globalThis","deleteProperty","param","createCanvas","createImage","loadImage","freeze","__proto__","compressSpaces","str","trimLeft","trimRight","toNumbers","matches","match","toMatrixValue","numbers","matrix","allUppercase","normalizeAttributeName","test","parseExternalUrl","urlMatch","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","String","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","PSEUDO_ZERO","vectorMagnitude","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","separator","getString","trim","split","zeroIsValue","regexp","result","isString","hasValue","asString","endsWith","def","n","isNormalizedColor","rootEmSize","emSize","axisOrIsFontSize","processPercent","axis","isFontSize","undefined","viewPort","screen","getNumber","min","computeSize","getRem","getEm","getDpi","PI","definitions","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","len","commas","ViewPort","viewPorts","pop","root","getDefault","current","getCurrent","DEFAULT_VIEWPORT_WIDTH","DEFAULT_VIEWPORT_HEIGHT","Point","point","defaultValue","path","points","pathPoints","atan2","transform","xp","Mouse","working","onClick","onMouseMove","onclick","onmousemove","events","eventElements","cursor","run","parent","isPointInPath","boundingBox","isPointInBox","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","mapXY","clientX","clientY","eventTarget","bind","defaultWindow","defaultFetch$1","Screen","checker","waits","readyPromise","isReadyLock","every","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","getPixels","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","mouse","frameDuration","FRAMERATE","isReady","tick","shouldUpdate","runEvents","intervalId","start","cancel","stop","shouldUpdate1","animations","reduce","animation","update","hasEvents","isFirstRender","clear","setCurrent","widthStyle","getStyle","heightStyle","concat","cWidth","cHeight","xRatio","yRatio","transformStyle","clearRect","defaultFetch","MAX_VIRTUAL_PIXELS","DefaultDOMParser","Parser","resource","parseFromString","load","parser","checkDocument","parserError","getElementsByTagName","textContent","Translate","applyTransform","Rotate","cx","cy","originX","originY","tx","ty","rotate","getRadians","rad","cos","sin","transformOrigin","Scale","scaleSize","parseScale","Matrix","f","det","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","Transform","transformOriginXProperty","transformOriginYProperty","transforms","unapply","applyToPoint","transform1","TransformType","transformTypes","skewX","skewY","Element","createIfNotExists","attributes","empty","href","skipAncestors","styles","parentStyle","save","mask","applyEffects","getValue","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","ignoreChildTypes","includes","styleClasses","styleClass","stylesSpecificity","styleProp","matchesSelector","existingSpecificity","ignoreStyles","toRestore1","toRestore","captureTextNodes","animationFrozen","animationFrozenValue","nodeType","attribute","nodeName","addStylesFromStyleDefinition","childNodes","textNode","getText","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","font","inherit","fontVariant","fontSize","parts","set","part","variants","weights","inheritFont","BoundingBox","x1","y1","x2","y2","addPoint","p0","p1","p2","p3","forX","addX","sumCubic","addY","b2ac","t1","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","bezierCurveAdd","cp1x","cp1y","cp2x","cp2y","addBezierCurve","NaN","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","getFillStyleDefinition","addOpacity","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","modifiedEmSizeStack","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","globalAlpha","calculateOpacity","popEmSize","TextElement","textBaseline","getTextBaseline","leafTexts","textChunkStart","POSITIVE_INFINITY","maxX","NEGATIVE_INFINITY","getTElementBoundingBox","initializeCoordinates","adjustChildCoordinatesRecursive","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","arabicForm","arabicGlyphs","glyphs","missingGlyph","lastIndex","renderTElementChildren","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","getGlyph","lw","horizAdvX","fillText","strokeText","firstElement","textAnchor","shift","adjustChildCoordinatesRecursiveCore","applyAnchoring","textParent","i1","adjustChildCoordinates","xAttr","yAttr","dxAttr","dyAttr","Boolean","getInheritedAttribute","i2","i3","measureCache","measure","measureTargetText","targetText","isFirstChild","parentAttr","TSpanElement","getTextFromNode","TextNode","PathParser","command","previousCommand","control","angles","commands","xProp","yProp","makeAbsolute","getPoint","CURVE_TO","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ox","oy","relative","priorTo","angleTo","addMarkerAngle","PathElement","pathParser","reset","isEnd","MOVE_TO","pathM","LINE_TO","pathL","HORIZ_LINE_TO","pathH","VERT_LINE_TO","pathV","pathC","pathS","pathQ","pathT","ARC","pathA","CLOSE_PATH","pathZ","_ctx","getMarkerPoints","getMarkerAngles","markers","checkPath","fillRuleStyleProp","setTransform","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","getAsCurrentPoint","addMarker","controlPoint","getAsControlPoint","currentPoint","bezierCurveTo","getReflectedControlPoint","addQuadraticCurve","quadraticCurveTo","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","l","s","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","SVGElement","setDefaults","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","setViewBox","removeCurrent","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","getPoints","PolylineElement","parsePath","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","pattern","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","stopsContainer","inheritStopContainer","stops","gradient","getGradient","addParentOpacity","addColorStop","rootView","getRoot","rect","group","attributesToInherit","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","attributeType","attributeName","initialUnits","progress","to","getProgress","getProperty","initialValue","getUnits","duration","maxDuration","frozen","removed","updated","begin","calcValue","typeAttr","values","lb","ub","ceil","getMilliseconds","valuesAttr","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","from1","to1","transformFrom","transformTo","FontFaceElement","ascent","descent","GlyphElement","unicode","MissingGlyphElement","FontElement","fontFamilyStyle","arabicGlyph","TRefElement","firstChild","AElement","hasText","open","node1","TextPathElement","dataArray","theta","dTheta","psi","fs","setTextData","textDecoration","glyphInfo","rotation","partialText","idx","letterSpacingCache","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","getLetterSpacingAt","splineStep","textHeight","getEquidistantPointOnPath","segment","dyX","dyY","measuresCache","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","textWidth","getPathLength","startOffset","nextOffset","findSegmentToFitChar","pathLength","pathCommands","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","end","inc","abs","getPointOnEllipticalArc","dist","fromX","fromY","m","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","getPointOnLine","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","Map","pathElement","parsePathData","dataUriRegex","ImageElement","image","loaded","atob","decodeURIComponent","subDocument","canvg","forkString","documentElement","complete","isSvg","images","loadSvg","SymbolElement","SVGFontLoader","svgDocument","fonts","fontNode","StyleElement","cssDefs","_1","cssParts","cssClasses","cssProps","cssClass","cssProp","srcs","UseElement","tempSvg","oldParent","cachedElement","imGet","_height","rgba","imSet","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","restoreStyles","noop","ClipPathElement","contextProto","getPrototypeOf","elementTransform","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","getUniqueId","display","removeChild","TitleElement","DescElement","elements","async","anonymousCrossOrigin","crossOrigin","reject","onerror","_event","_source","_lineno","_colno","DEFAULT_EM_SIZE","Document","createImage1","source","forceAnonymousCrossOrigin","emSizeStack","uniqueId","elementType","ElementType","elementTypes","config","createCanvas1","createImage2","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","Canvg","fromString","ready","baseOptions","resize","createDocumentElement","global","vendors","suffix","raf","caf","last","queue","_now","cp","cancelled","handle","polyfill","object","requestAnimationFrame","cancelAnimationFrame","$","$findIndex","findIndex","addToUnscopables","FIND_INDEX","SKIPS_HOLES","proto","forced","callbackfn","setPrototypeOf","o","O","T","cX","cY","phi1","phi2","N","E","A","C","M","R","I","S","L","ROUND","TO_ABS","TO_REL","NORMALIZE_HVZ","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxY","DRAWING_COMMANDS","w","U","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","SyntaxError","encode","getBounds"],"mappings":"mGAAAA,EAAOC,QAAU,8xB,qBCAjBD,EAAOC,QAAU,8d,sFCCjB,OAAMC,UAAUC,MAAQ,SAAUC,EAAUC,GACxC,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASH,MAAMC,EAAUC,IAGjC,OAAMH,UAAUO,MAAQ,SAAUL,EAAUC,GACxC,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASG,MAAML,EAAUC,IAGjC,OAAMH,UAAUQ,OAAS,SAAUN,EAAUC,GACzC,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASI,OAAON,EAAUC,IAGlC,OAAMH,UAAUS,UAAY,SAAUC,EAAUP,GAC5C,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASK,UAAUC,EAAUP,IAGrC,OAAMH,UAAUW,WAAa,SAAUD,EAAUP,GAC7C,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASO,WAAWD,EAAUP,IAGtC,OAAMH,UAAUY,UAAY,SAAUF,EAAUP,GAC5C,MAAMC,EAAWC,KAAKC,UAAU,UAC5BF,GACAA,EAASQ,UAAUF,EAAUP,IClCrC,IAAIU,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOM,OAAOC,yBAAyBT,EAAQC,GAAOC,EACrH,GAAuB,kBAAZQ,SAAoD,oBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASZ,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIU,EAAIb,EAAWO,OAAS,EAAGM,GAAK,EAAGA,KAAST,EAAIJ,EAAWa,MAAIL,GAAKH,EAAI,EAAID,EAAEI,GAAKH,EAAI,EAAID,EAAEH,EAAQC,EAAKM,GAAKJ,EAAEH,EAAQC,KAASM,GAChJ,OAAOH,EAAI,GAAKG,GAAKC,OAAOK,eAAeb,EAAQC,EAAKM,GAAIA,GAIzD,MAAM,UAAe,OACxB,cACIO,QACAxB,KAAKyB,KAAO,SAEhB,WACI,OAAOzB,KAAK0B,MAAMC,KAEtB,KAAKD,GACD1B,KAAK0B,MAAQA,EAEjB,UAAUrB,EAAW,QAASP,EAAU,IACpCE,KAAKE,MAAO0B,IACR,OAAQC,gBAAgBD,EAASvB,IAClCP,GAEP,WAAWO,EAAW,QAASP,EAAU,IACrCE,KAAKE,MAAO0B,IACR,OAAQC,gBAAgBD,EAASvB,IAClCP,GAEP,UAAUO,EAAW,QAASP,EAAU,IACpCE,KAAKJ,MAAOkC,IACR,OAAQD,gBAAgB,OAAQE,aAAaD,GAAMzB,IACpDP,GAEP,MAAMD,EAAUC,EAAU,IACtBE,KAAKgC,OAAO,gBAAiBlC,GAC7B,MAAMmC,EAASjC,KAAK2B,KAAKG,IACnBI,EAAO,OAAOC,OAAOF,GAAQG,QACnC,IAAIC,EAAYH,EAAKI,KACrB,MAAMC,EAASL,EAAKM,QAAQ,IAAIxC,KAAK2B,KAAKc,gBAAgB,oBACpDC,EAAU5C,EAAQ4C,SAAW1C,KAAK0B,MAAMiB,aAAa3C,KAAK0B,MAAMkB,kBAChEC,EAAY/C,EAAQgD,mBAC1B,GAAID,EAAW,CACX,MAAME,EAA4B,mBAAdF,EAA0BH,EAAUG,EACxDX,EAAKc,KAAK,CACNC,MAAOF,EAAKE,MACZC,OAAQH,EAAKG,SAsBrB,GAnBAhB,EACKiB,gBAAgB,SAChBH,KAAK,UAAW,CAACN,EAAQU,EAAGV,EAAQW,EAAGX,EAAQO,MAAOP,EAAQQ,QAAQI,KAAK,MAChFf,EAAOY,gBAAgB,cAgBI,IAAvBrD,EAAQyD,WAAsB,CAC9B,MAAMC,EAAWvB,EAAOwB,cAClBC,EAAOC,MAAMC,KAAK3B,EAAO4B,iBAAiB,MAC1CC,EAASH,MAAMC,KAAKvB,EAAUwB,iBAAiB,MAC/CE,EAAkBP,EAASQ,YAAYhD,OACvCiD,EAAkB,GACxB,IAAK,IAAIC,EAAIH,EAAkB,EAAGG,GAAK,EAAGA,GAAK,EAO3CD,EAAgBC,GAAKV,EAASQ,YAAYE,GAC1CV,EAASQ,YAAYE,GAAGC,UAAW,EAEvC,MAAMC,EAAwB,GAC9BV,EAAKW,QAAQ,CAACC,EAAMC,KAChB,MAAMC,EAAgBC,OAAOC,iBAAiBJ,EAAM,MAG9CK,EAAuB,GAC7BzD,OAAO0D,KAAKJ,GAAeH,QAASQ,IAChCF,EAAqBE,GACjBL,EAAcM,iBAAiBD,KAEvCT,EAAsBG,GAASI,IAG/BZ,IAAoBP,EAASQ,YAAYhD,QACzCiD,EAAgBI,QAAQ,CAACU,EAAMR,KAC3Bf,EAASQ,YAAYO,GAASQ,IAGtC,IAAK,IAAIzD,EAAI,EAAGA,EAAIyC,EAAiBzC,GAAK,EACtCkC,EAASQ,YAAY1C,GAAG6C,UAAW,EAEvC,MAAMa,EAAe,GACrBtB,EAAKW,QAAQ,CAACC,EAAMC,KAChB,MAAMC,EAAgBC,OAAOC,iBAAiBJ,EAAM,MAC9CK,EAAuBP,EAAsBG,GAC7CU,EAAc,GACpB/D,OAAO0D,KAAKJ,GAAeH,QAASQ,IAC3B,OAAUK,SAASL,IACpBL,EAAcM,iBAAiBD,KAC3BF,EAAqBE,KACzBI,EAAYJ,GAAYL,EAAcM,iBAAiBD,MAG/DG,EAAaT,GAASU,IAE1BnB,EAAOO,QAAQ,CAACC,EAAMC,KAClB,OAAIY,IAAIb,EAAMU,EAAaT,MAGnC,MAAMa,EAAatF,EAAQsF,WAC3B,GAA0B,kBAAfA,EAAyB,CAChC,MAAMC,EAAepD,EAChBwB,cAAc6B,eAAeC,eAAe,KAAM,MAAO,MACzDC,mBAAmBJ,GACxBlD,EAAKuD,QAAQ,OAAOtD,OAAO,QAAS,CAChCuD,KAAM,YACP,CAACL,KAER,MAAMM,EAAS,KACX,MAAMC,EAAkB9F,EAAQ8F,gBAChC,GAA+B,oBAApBA,EAAgC,CACvC,MAAMC,EAAM,OAAYC,KAAKF,EAAiB5F,KAAK0B,MAAOW,GACtDwD,aAAeE,gBACf1D,EAAYwD,GAGpB,MAAMjE,GAAU,IAAIoE,eACfC,kBAAkB5D,GAClB6D,QAAQ,UAAW,KACxBlG,KAAKgC,OAAO,eAAgBlC,GAC5BD,EAAS+B,IAEb,GAAI9B,EAAQqG,gBAAiB,CACzB,MAAMC,EAAYlE,EAAKmE,KAAK,SAASC,IAAKC,GAC/B,IAAIC,QAASC,IAChB,MAAMC,EAAMH,EAAOvD,KAAK,eAAiBuD,EAAOvD,KAAK,QACrD,OAAQ2D,eAAeD,EAAK,CAACE,EAAKhF,MACzBgF,GAAOhF,GACR2E,EAAOvD,KAAK,aAAcpB,GAE9B6E,SAIZD,QAAQK,IAAIT,GAAWU,KAAKnB,QAG5BA,IAGR,UAAU9F,EAAUC,GAChB,IAAI4C,EAAU5C,EAAQ4C,SAAW1C,KAAK0B,MAAMkB,iBAC5C,MAAMmE,EAAU,OAAUC,eAAelH,EAAQiH,SAC7CjH,EAAQmD,OAASnD,EAAQoD,SACrB6D,EAAQE,KAAOF,EAAQG,OAASpH,EAAQmD,QACxC8D,EAAQE,KAAOF,EAAQG,MAAQ,GAE/BH,EAAQI,IAAMJ,EAAQK,QAAUtH,EAAQoD,SACxC6D,EAAQI,IAAMJ,EAAQK,OAAS,IAGvC,MAAMC,EAAY,IAAI,QAAWN,EAAQE,MAAOF,EAAQI,IAAKJ,EAAQE,KAAOF,EAAQG,MAAOH,EAAQI,IAAMJ,EAAQK,QACjH,GAAItH,EAAQmD,OAASnD,EAAQoD,OAAQ,CACjC,MAAMD,EAAQP,EAAQO,MAAQ8D,EAAQE,KAAOF,EAAQG,MAC/ChE,EAASR,EAAQQ,OAAS6D,EAAQI,IAAMJ,EAAQK,OACtDC,EAAUC,MAAMrE,EAAQnD,EAAQmD,MAAOC,EAASpD,EAAQoD,QAE5DR,EAAU,OAAUP,OAAOO,GAAS6E,cAAcF,GAClD,MAAMG,EAAmC,kBAAlB1H,EAAQmD,OAAgD,kBAAnBnD,EAAQoD,OAC9D,CAAED,MAAOnD,EAAQmD,MAAOC,OAAQpD,EAAQoD,QACxCR,EACN,IAAI4E,EAAQxH,EAAQ2H,MAAQC,WAAW5H,EAAQ2H,OAAS,EACnDE,OAAOC,SAASN,IAAoB,IAAVA,IAC3BA,EAAQ,GAEZ,MAAMvE,EAAO,CACTE,MAAO4E,KAAKC,IAAID,KAAKE,MAAMP,EAAQvE,MAAQqE,GAAQ,GACnDpE,OAAQ2E,KAAKC,IAAID,KAAKE,MAAMP,EAAQtE,OAASoE,GAAQ,IAEzD,CACI,MAAMU,EAAgBxE,SAASyE,cAAc,UACvCC,EAAYF,EAAcG,WAAW,MAC3CH,EAAc/E,MAAQF,EAAKE,MAC3B+E,EAAc9E,OAASH,EAAKG,OAC5B,MAAME,EAAIL,EAAKE,MAAQ,EACjBI,EAAIN,EAAKG,OAAS,EACxBgF,EAAUE,UAAY,aACtBF,EAAUG,SAASjF,EAAGC,EAAG,EAAG,GAC5B,MAAMiF,EAAOJ,EAAUK,aAAanF,EAAGC,EAAG,EAAG,GAAGiF,KAChD,GAAgB,IAAZA,EAAK,IAAwB,IAAZA,EAAK,IAAwB,IAAZA,EAAK,GACvC,MAAM,IAAIE,MAAM,iBAGxB,MAAMC,EAAM,IAAIC,MAChBD,EAAIE,OAAS,KACT,MAAMC,EAASpF,SAASyE,cAAc,UACtCW,EAAO3F,MAAQF,EAAKE,MACpB2F,EAAO1F,OAASH,EAAKG,OACrB,MAAM2F,EAAUD,EAAOT,WAAW,MAClCU,EAAQT,UAAYtI,EAAQgJ,iBAAmB,QAC/CD,EAAQR,SAAS,EAAG,EAAGtF,EAAKE,MAAOF,EAAKG,QACxC,IACI2F,EAAQE,UAAUN,EAAK,EAAG,EAAG1F,EAAKE,MAAOF,EAAKG,QAC9C,MAAMtB,EAAUgH,EAAOI,UAAUlJ,EAAQ4F,KAAM5F,EAAQmJ,SACvDpJ,EAAS+B,GAEb,MAAOsH,MAIXlJ,KAAKJ,MAAOgC,IACR6G,EAAIU,IAAM,sBAAsBC,mBAAmBxH,IACpDV,OAAOmI,OAAOnI,OAAOmI,OAAO,GAAIvJ,GAAU,CAAE4C,UAASyD,iBAAiB,EAAMrD,mBAAoB5B,OAAOmI,OAAO,GAAItG,MAEzH,MAAMlD,EAAUC,EAAU,IACtBE,KAAKgJ,UAAUnJ,EAAUqB,OAAOmI,OAAOnI,OAAOmI,OAAO,GAAIvJ,GAAU,CAAE4F,KAAM,eAE/E,OAAO7F,EAAUC,EAAU,IACvBE,KAAKgJ,UAAUnJ,EAAUqB,OAAOmI,OAAOnI,OAAOmI,OAAO,GAAIvJ,GAAU,CAAE4F,KAAM,gBAE/E,OAAOjE,EAAM6H,GACTtJ,KAAKuJ,QAAQ9H,EAAM6H,GACnBtJ,KAAK0B,MAAM6H,QAAQ9H,EAAM6H,GAE7B,UACItJ,KAAKwJ,OAGbhJ,EAAW,CACP,OAASiJ,WACV,EAAO9J,UAAW,UAAW,O,2CCpPhC,IAAI+J,EAAS,WAAa,IAAIC,EAAI3J,KAAS4J,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,WAAW,CAAC,CAACvI,KAAK,UAAUwI,QAAQ,4BAA4BC,MAAOP,EAAW,QAAEQ,WAAW,UAAUC,UAAU,CAAC,YAAa,EAAK,MAAO,KAAQC,YAAY,iBAAiB,CAACP,EAAG,MAAM,CAACO,YAAY,gBAAgB,CAACP,EAAG,MAAM,CAACO,YAAY,cAAc,CAACP,EAAG,MAAM,CAACQ,YAAY,CAAC,cAAc,OAAO,OAAS,OAAO,QAAU,OAAO,cAAc,WAAW,CAACR,EAAG,MAAM,CAAGH,EAAIY,mBAAuIZ,EAAIa,KAAvHV,EAAG,OAAO,CAACW,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAIY,oBAAqB,KAAQ,CAACZ,EAAIgB,GAAGhB,EAAIiB,GAAGjB,EAAIkB,cAAcpJ,SAAmBkI,EAAsB,mBAAEG,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,QAAQ,eAAe,QAAQQ,MAAM,CAAC,KAAO,SAASL,GAAG,CAAC,KAAO,SAASC,GAAQf,EAAIY,oBAAqB,IAAQQ,MAAM,CAACb,MAAOP,EAAIkB,cAAkB,KAAEhL,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAIkB,cAAe,OAAQG,IAAMb,WAAW,wBAAwBR,EAAIa,MAAM,GAAGV,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,SAAS,kBAAkB,iBAAiB,CAAGX,EAAIuB,QAAqLvB,EAAIa,KAAhLV,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,OAAO,IAAM,EAAQ,SAAmCL,GAAG,CAAC,MAAQd,EAAIwB,UAAoBxB,EAAW,QAAEG,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,KAAK,IAAM,EAAQ,SAAkCL,GAAG,CAAC,MAAQd,EAAIwB,UAAUxB,EAAIa,KAAOb,EAAIyB,QAAmLzB,EAAIa,KAA9KV,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,OAAO,IAAM,EAAQ,SAAiCL,GAAG,CAAC,MAAQd,EAAI0B,UAAoB1B,EAAW,QAAEG,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,KAAK,IAAM,EAAQ,SAAgCL,GAAG,CAAC,MAAQd,EAAI0B,UAAU1B,EAAIa,KAAKV,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,OAAO,UAAYnB,EAAI2B,cAAc,IAAM,EAAQ,SAAiCb,GAAG,CAAC,MAAQd,EAAI4B,YAAYzB,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,OAAO,UAAYnB,EAAI6B,aAAa,IAAM,EAAQ,SAAgCf,GAAG,CAAC,MAAQd,EAAI8B,yBAAyB3B,EAAG,MAAM,CAACQ,YAAY,CAAC,eAAe,SAAS,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,KAAK,IAAM,EAAQ,SAAgCL,GAAG,CAAC,MAAQd,EAAI+B,cAAc5B,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,SAASQ,MAAM,CAAC,MAAQ,OAAO,IAAM,EAAQ,SAAsCL,GAAG,CAAC,MAAQd,EAAIgC,eAAe7B,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,OAAS,YAAYQ,MAAM,CAAC,MAAQ,OAAO,IAAM,EAAQ,SAAgCL,GAAG,CAAC,MAAQd,EAAIiC,4BAA4B9B,EAAG,aAAa,CAACE,WAAW,CAAC,CAACvI,KAAK,OAAOwI,QAAQ,SAASC,MAAOP,EAAe,YAAEQ,WAAW,gBAAgBW,MAAM,CAAC,KAAOnB,EAAIkC,KAAK,MAAQlC,EAAImC,MAAM,MAAQnC,EAAIrC,MAAM,MAAQqC,EAAIoC,WAAW,OAASpC,EAAIqC,YAAY,OAASrC,EAAIsC,OAAO,OAAStC,EAAIuC,OAAO,WAAavC,EAAIwC,MAAMC,EAAE,WAAazC,EAAIwC,MAAME,EAAE,cAAe,KAAQvC,EAAG,MAAM,CAACQ,YAAY,CAAC,SAAW,WAAW,KAAO,QAAQ,IAAM,QAAQQ,MAAM,CAAC,GAAK,eAAkC,GAAlBnB,EAAI2C,WAAqBxC,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,SAAW,WAAW,KAAO,MAAM,IAAM,OAAO,cAAc,QAAQ,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,OAAS,YAAY,QAAU,SAASQ,MAAM,CAAC,IAAM,EAAQ,WAAmChB,EAAG,YAAY,CAACQ,YAAY,CAAC,OAAS,SAAS,aAAa,OAAO,QAAU,QAAQ,gBAAgB,OAAOQ,MAAM,CAAC,KAAO,SAAS,CAACnB,EAAIgB,GAAG,WAAW,GAAGhB,EAAIa,MAAM,GAAGV,EAAG,MAAM,CAACO,YAAY,aAAa,CAACP,EAAG,MAAM,CAACO,YAAY,cAAc,CAACP,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,SAAS,kBAAkB,gBAAgB,QAAU,QAAQ,cAAc,QAAQ,CAACR,EAAG,OAAO,CAACH,EAAIgB,GAAG,UAAUb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAI4C,qBAAsB,KAAQ,CAAC5C,EAAIgB,GAAG,YAAY,GAAGb,EAAG,cAAcA,EAAG,MAAM,CAACQ,YAAY,CAAC,cAAc,MAAM,OAAS,SAAS,CAACR,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,SAAS,CAACR,EAAG,MAAM,CAACO,YAAY,eAAe,CAACP,EAAG,WAAW,CAACnJ,IAAIgJ,EAAI6C,SAASC,IAAI,cAAcnC,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,KAAOnB,EAAI+C,kBAAkB,eAAc,EAAM,wBAAwB,IAAIjC,GAAG,CAAC,iBAAiBd,EAAIgD,sBAAsB,CAAC7C,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,UAAU,MAAQ,KAAK,cAAc,IAAI8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GAC59I,IAAIM,EAAMN,EAAIM,IACd,MAAO,CAACjD,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,WAAW,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,eAAe,OAAOQ,MAAM,CAAC,IAAMiC,EAAIC,QAAQ,IAAM,MAAMlD,EAAG,OAAO,CAACQ,YAAY,CAAC,YAAY,SAAS,CAACX,EAAIgB,GAAGhB,EAAIiB,GAAGmC,EAAItL,SAASqI,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,OAAO,KAAO,kBAAkBL,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIsD,gBAAgB,WAAW,IAAI,MAAM,IAAI,GAAGnD,EAAG,MAAM,CAACO,YAAY,QAAQ,CAACP,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,SAAS,kBAAkB,gBAAgB,QAAU,MAAM,iBAAiB,MAAM,CAACR,EAAG,OAAO,CAACH,EAAIgB,GAAG,UAAUb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAIuD,oBAAqB,KAAQ,CAACvD,EAAIgB,GAAG,YAAY,GAAGb,EAAG,cAAcA,EAAG,MAAM,CAACQ,YAAY,CAAC,OAAS,MAAM,SAAW,WAAW,CAACR,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,QAAQ,CAACR,EAAG,UAAU,CAACnJ,IAAIgJ,EAAIwD,UAAU9C,YAAY,cAAcC,YAAY,CAAC,aAAa,MAAM,MAAQ,QAAQ,YAAY,QAAQQ,MAAM,CAAC,KAAOnB,EAAIyD,aAAa,WAAW,QAAQ,qBAAqB,GAAG,MAAQzD,EAAI0D,aAAa,wBAAwB,GAAG,wBAAuB,GAAO5C,GAAG,CAAC,aAAad,EAAI2D,iBAAiBV,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GACprC,IAAInK,EAAOmK,EAAInK,KACXgG,EAAOmE,EAAInE,KACf,OAAOwB,EAAG,OAAO,CAACO,YAAY,oBAAoB,CAAG/B,EAAKiF,OAAiF5D,EAAIa,KAA7E,CAACV,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,IAAMxC,EAAKkF,eAAwB1D,EAAG,OAAO,CAACQ,YAAY,CAAC,MAAQ,QAAQ,cAAc,WAAW,CAACX,EAAIgB,GAAG,IAAIhB,EAAIiB,GAAGtI,EAAKmL,OAAO,KAAMnF,EAAKiF,QAAUjF,EAAKoF,SAAS1M,QAAU,EAAG,CAAC2I,EAAIgB,GAAG,KAAKhB,EAAIiB,GAAGtC,EAAKoF,SAAS1M,QAAQ,OAAO2I,EAAIa,MAAM,GAAGV,EAAG,OAAO,CAACO,YAAY,qBAAqB,CAACP,EAAG,YAAY,CAACQ,YAAY,CAAC,QAAU,KAAKQ,MAAM,CAAC,KAAO,OAAO,KAAO,QAAQL,GAAG,CAAC,MAAQ,WAAc,OAAOd,EAAIgE,QAAQrL,EAAMgG,MAAW,CAACwB,EAAG,IAAI,CAACO,YAAY,sBAAsB,IAAI,UAAU,IAAI,IAAI,KAAKP,EAAG,MAAM,CAACO,YAAY,cAAc,CAACP,EAAG,MAAM,CAACO,YAAY,QAAQ,CAACP,EAAG,UAAU,CAACgB,MAAM,CAAC,KAAO,OAAO,QAAS,EAAK,MAAQnB,EAAIiE,OAAO,CAAC9D,EAAG,SAAS,CAACQ,YAAY,CAAC,cAAc,SAAS,CAACR,EAAG,SAAS,CAACgB,MAAM,CAAC,KAAO,KAAK,CAAChB,EAAG,eAAe,CAACA,EAAG,YAAY,CAACgB,MAAM,CAAC,UAAY,GAAG,YAAc,QAAQL,GAAG,CAAC,OAASd,EAAIkE,kBAAkB9C,MAAM,CAACb,MAAOP,EAAIiE,KAAkB,cAAE/N,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAIiE,KAAM,gBAAiB5C,IAAMb,WAAW,uBAAuBR,EAAImE,GAAInE,EAAiB,eAAE,SAASoE,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,EAAK7D,YAAW,IAAI,IAAI,GAAGJ,EAAG,SAAS,CAACgB,MAAM,CAAC,KAAO,KAAK,CAAChB,EAAG,eAAe,CAACA,EAAG,YAAY,CAACgB,MAAM,CAAC,UAAY,GAAG,YAAc,QAAQL,GAAG,CAAC,OAASd,EAAIqE,mBAAmBjD,MAAM,CAACb,MAAOP,EAAIiE,KAAmB,eAAE/N,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAIiE,KAAM,iBAAkB5C,IAAMb,WAAW,wBAAwBR,EAAImE,GAAInE,EAAkB,gBAAE,SAASoE,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,EAAK7D,YAAW,IAAI,IAAI,IAAI,GAAGJ,EAAG,eAAe,CAACA,EAAG,WAAW,CAACQ,YAAY,CAAC,OAAS,SAAS,MAAQ,SAASQ,MAAM,CAAC,UAAY,GAAG,YAAc,UAAU,cAAc,kBAAkBmD,SAAS,CAAC,QAAU,SAASvD,GAAQ,OAAIA,EAAOhF,KAAKwI,QAAQ,QAAQvE,EAAIwE,GAAGzD,EAAO0D,QAAQ,QAAQ,GAAG1D,EAAO/J,IAAI,SAAkB,KAAcgJ,EAAI0E,cAAcC,MAAM,KAAMvN,aAAagK,MAAM,CAACb,MAAOP,EAAIiE,KAAc,UAAE/N,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAIiE,KAAM,YAAa5C,IAAMb,WAAW,qBAAqB,IAAI,GAAGL,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,QAAQ,CAACR,EAAG,WAAW,CAACE,WAAW,CAAC,CAACvI,KAAK,UAAUwI,QAAQ,YAAYC,MAAOP,EAAW,QAAEQ,WAAW,YAAYsC,IAAI,cAAcnC,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,KAAOnB,EAAI4E,YAAY,eAAc,EAAM,wBAAwB,KAAK,CAACzE,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,aAAa,MAAQ,KAAK,cAAc,IAAI8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GAC3/E,IAAIM,EAAMN,EAAIM,IACd,MAAO,CAACjD,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,WAAW,CAACR,EAAG,MAAM,CAACA,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,eAAe,QAAQQ,MAAM,CAAC,UAAY,GAAG,IAAMiC,EAAIS,WAAW,IAAM,IAAI/C,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOf,EAAI6E,UAAUzB,EAAKrC,OAAYZ,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,QAAQ,aAAa,WAAW,CAACX,EAAIgB,GAAG,KAAKhB,EAAIiB,GAAGmC,EAAI0B,cAAc,SAAS3E,EAAG,MAAM,CAACQ,YAAY,CAAC,cAAc,SAAS,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,YAAY,SAAS,CAACX,EAAIgB,GAAGhB,EAAIiB,GAAGmC,EAAI2B,gBAAgB5E,EAAG,YAAY,CAACQ,YAAY,CAAC,gBAAgB,OAAOQ,MAAM,CAAC,YAAc,OAAO,KAAO,QAAQC,MAAM,CAACb,MAAO6C,EAAa,UAAElN,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAK8B,EAAK,YAAa/B,IAAMb,WAAW,kBAAkBR,EAAImE,GAAIf,EAAgB,cAAE,SAASgB,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,EAAK7D,YAAW,GAAGJ,EAAG,YAAY,CAACQ,YAAY,CAAC,OAAS,SAASQ,MAAM,CAAC,YAAc,OAAO,KAAO,QAAQL,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOf,EAAIgF,gBAAgB5B,EAAKrC,KAAUK,MAAM,CAACb,MAAO6C,EAAe,YAAElN,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAK8B,EAAK,cAAe/B,IAAMb,WAAW,oBAAoBR,EAAImE,GAAIf,EAAa,WAAE,SAASgB,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,QAAU,GAAGjE,EAAG,kBAAkB,CAACQ,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,UAAY,EAAE,KAAO,OAAO,IAAM,GAAGC,MAAM,CAACb,MAAO6C,EAAU,OAAElN,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAK8B,EAAK,SAAU/B,IAAMb,WAAW,iBAAiB,aAAa,GAAIR,EAAI4E,YAAYvN,QAAU2I,EAAIiE,KAAKgB,MAAO9E,EAAG,YAAY,CAACQ,YAAY,CAAC,cAAc,QAAQQ,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQd,EAAIkF,eAAe,CAAClF,EAAIgB,GAAG,UAAUb,EAAG,IAAI,CAACQ,YAAY,CAAC,cAAc,OAAO,YAAY,OAAO,MAAQ,YAAY,CAACX,EAAIgB,GAAG,YAAY,IAAI,KAAwB,GAAlBhB,EAAI2C,WAAqBxC,EAAG,MAAM,CAACO,YAAY,mBAAmB,CAACP,EAAG,MAAM,CAACO,YAAY,mBAAmBI,GAAG,CAAC,MAAQd,EAAImF,mBAAmB,CAAChF,EAAG,MAAM,CAACgB,MAAM,CAAC,IAAM,EAAQ,QAAiC,IAAM,QAAQhB,EAAG,MAAM,CAACO,YAAY,mBAAmBI,GAAG,CAAC,UAAY,SAASC,GAAQf,EAAIoF,eAAgB,GAAM,WAAapF,EAAIqF,eAAe,CAAErF,EAAiB,cAAEG,EAAG,MAAM,CAACA,EAAG,IAAI,CAACO,YAAY,gBAAgBI,GAAG,CAAC,MAAQd,EAAIsF,qBAAqBnF,EAAG,IAAI,CAACO,YAAY,eAAeC,YAAY,CAAC,OAAS,UAAUG,GAAG,CAAC,MAAQd,EAAIuF,oBAAoBvF,EAAIa,KAAOb,EAAIwF,iBAAoIxF,EAAIa,KAAtHV,EAAG,OAAO,CAACW,GAAG,CAAC,UAAY,SAASC,GAAQf,EAAIwF,kBAAmB,KAAQ,CAACxF,EAAIgB,GAAGhB,EAAIiB,GAAGjB,EAAIyF,aAAa,OAAiBzF,EAAoB,iBAAEG,EAAG,YAAY,CAACgB,MAAM,CAAC,MAAQnB,EAAIyF,YAAc,IAAI,YAAc,OAAO3E,GAAG,CAAC,OAASd,EAAI0F,oBAAoB1F,EAAImE,GAAInE,EAAgB,cAAE,SAASoE,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,EAAK7D,YAAW,GAAGP,EAAIa,MAAM,KAAKb,EAAIa,KAAKV,EAAG,YAAY,CAACgB,MAAM,CAAC,MAAQ,OAAO,QAAUnB,EAAI2F,qBAAqB,MAAQ,OAAO7E,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAI2F,qBAAqB5E,KAAU,CAACZ,EAAG,UAAU,CAACA,EAAG,eAAe,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,MAAQ,SAAS,CAAChB,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,YAAc,cAAcC,MAAM,CAACb,MAAOP,EAAiB,cAAE9J,SAAS,SAAUmL,GAAMrB,EAAI4F,cAAcvE,GAAKb,WAAW,oBAAoB,IAAI,GAAGL,EAAG,MAAM,CAACO,YAAY,gBAAgBS,MAAM,CAAC,KAAO,UAAU0E,KAAK,UAAU,CAAC1F,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAI2F,sBAAuB,KAAS,CAAC3F,EAAIgB,GAAG,QAAQb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,WAAWL,GAAG,CAAC,MAAQd,EAAI8F,UAAU,CAAC9F,EAAIgB,GAAG,UAAU,IAAI,GAAGb,EAAG,YAAY,CAACgB,MAAM,CAAC,MAAQ,OAAO,QAAUnB,EAAI4C,oBAAoB,MAAQ,OAAO9B,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAI4C,oBAAoB7B,KAAU,CAACZ,EAAG,UAAU,CAACgB,MAAM,CAAC,MAAQnB,EAAI+F,kBAAkB,CAAC5F,EAAG,eAAe,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,MAAQ,SAAS,CAAChB,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,YAAc,WAAWC,MAAM,CAACb,MAAOP,EAAI+F,gBAAoB,KAAE7P,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAI+F,gBAAiB,OAAQ1E,IAAMb,WAAW,2BAA2B,GAAGL,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,SAASQ,MAAM,CAAC,MAAQ,UAAU,CAAChB,EAAG,YAAY,CAAC2C,IAAI,SAASkD,MAAM,CAAEC,KAAM5P,KAAK6P,SAAS7O,QAAU,GAAI8J,MAAM,CAAC,OAASnB,EAAImG,aAAa,YAAY,eAAe,MAAQ,EAAE,YAAYnG,EAAIoG,aAAa,aAAapG,EAAIqG,oBAAoB,WAAWrG,EAAIsG,kBAAkB,gBAAgBtG,EAAIuG,mBAAmB,cAAcvG,EAAIwG,cAAc,YAAYxG,EAAIkG,UAAUjD,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,OAAOmM,GAAG,SAASL,GACp3I,IAAI2D,EAAO3D,EAAI2D,KACf,OAAOtG,EAAG,MAAM,GAAG,CAACA,EAAG,MAAM,CAACO,YAAY,iCAAiCS,MAAM,CAAC,IAAMsF,EAAK9H,KAAK,IAAM,MAAMwB,EAAG,OAAO,CAACO,YAAY,gCAAgC,CAACP,EAAG,OAAO,CAACO,YAAY,+BAA+BI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAI0G,yBAAyBD,MAAS,CAACtG,EAAG,IAAI,CAACO,YAAY,sBAAwBV,EAAI2G,cAA4K3G,EAAIa,KAAjKV,EAAG,OAAO,CAACO,YAAY,8BAA8BI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAI4G,aAAaH,MAAS,CAACtG,EAAG,IAAI,CAACO,YAAY,8BAAuC,CAACP,EAAG,MAAM,CAACgB,MAAM,CAAC,KAAO,UAAU,IAAM,EAAQ,QAAiC,IAAM,IAAI0E,KAAK,cAAc1F,EAAG,YAAY,CAACgB,MAAM,CAAC,kBAAiB,EAAK,QAAUnB,EAAI6G,qBAAqB/F,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAI6G,oBAAoB9F,KAAU,CAACZ,EAAG,MAAM,CAACgB,MAAM,CAAC,MAAQ,OAAO,IAAMnB,EAAI8G,eAAe,IAAM,SAAS,IAAI,GAAG3G,EAAG,MAAM,CAACO,YAAY,gBAAgBS,MAAM,CAAC,KAAO,UAAU0E,KAAK,UAAU,CAAC1F,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAI4C,qBAAsB,KAAS,CAAC5C,EAAIgB,GAAG,QAAQb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,WAAWL,GAAG,CAAC,MAAQd,EAAI+G,cAAc,CAAC/G,EAAIgB,GAAG,UAAU,IAAI,GAAGb,EAAG,YAAY,CAACgB,MAAM,CAAC,MAAQ,OAAO,QAAUnB,EAAIuD,mBAAmB,MAAQ,OAAOzC,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAIuD,mBAAmBxC,KAAU,CAACZ,EAAG,UAAU,CAACgB,MAAM,CAAC,MAAQnB,EAAI+F,kBAAkB,CAAC5F,EAAG,eAAe,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,MAAQ,SAAS,CAAChB,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,SAASQ,MAAM,CAAC,YAAc,WAAWC,MAAM,CAACb,MAAOP,EAAkB,eAAE9J,SAAS,SAAUmL,GAAMrB,EAAIgH,eAAe3F,GAAKb,WAAW,qBAAqB,IAAI,GAAGL,EAAG,MAAM,CAACO,YAAY,gBAAgBS,MAAM,CAAC,KAAO,UAAU0E,KAAK,UAAU,CAAC1F,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAIuD,oBAAqB,KAAS,CAACvD,EAAIgB,GAAG,QAAQb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,WAAWL,GAAG,CAAC,MAAQd,EAAIiH,aAAa,CAACjH,EAAIgB,GAAG,UAAU,IAAI,GAAIhB,EAA2B,wBAAEG,EAAG,YAAY,CAACgB,MAAM,CAAC,QAAUnB,EAAIkH,wBAAwB,MAAQ,OAAOpG,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAIkH,wBAAwBnG,KAAU,CAACZ,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,SAAS,CAACR,EAAG,MAAM,CAACO,YAAY,YAAY,CAACP,EAAG,MAAM,CAACQ,YAAY,CAAC,aAAa,SAAS,gBAAgB,SAAS,CAACR,EAAG,IAAI,CAACQ,YAAY,CAAC,OAAS,oBAAoB,MAAQ,QAAQ,OAAS,SAAS,cAAc,SAAS,CAACX,EAAIgB,GAAG,IAAIhB,EAAIiB,GAAGjB,EAAIkB,cAAcpJ,MAAM,SAASqI,EAAG,UAAU,CAACiB,MAAM,CAACb,MAAOP,EAAoB,iBAAE9J,SAAS,SAAUmL,GAAMrB,EAAImH,iBAAiB9F,GAAKb,WAAW,qBAAqB,CAACL,EAAG,cAAc,CAACQ,YAAY,CAAC,OAAS,OAAO,MAAQ,OAAOQ,MAAM,CAAC,MAAQ,KAAK,KAAO,UAAU,CAAChB,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,SAAS,CAAEX,EAAIoH,gBAAgB/P,OAAS,EAAG2I,EAAImE,GAAInE,EAAmB,iBAAE,SAASoE,EAAKxJ,GAAO,OAAOuF,EAAG,MAAM,CAACnJ,IAAI4D,GAAOoF,EAAImE,GAAIC,EAAU,OAAE,SAASiD,EAAQzM,GAAO,OAAOuF,EAAG,MAAM,CAACnJ,IAAI4D,GAAO,CAACuF,EAAG,IAAI,CAACQ,YAAY,CAAC,cAAc,SAAS,CAACX,EAAIgB,GAAG,IAAIhB,EAAIiB,GAAGmD,EAAKtM,MAAM,IAAIkI,EAAIiB,GAAGoG,EAAQvD,OAAO,OAAO3D,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,KAAOkG,EAAQtD,SAAS,OAAS,GAAG,aAAa,QAAQ,CAAC5D,EAAG,kBAAkB,CAACgB,MAAM,CAAC,MAAQ,OAAO,cAAc,IAAI8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GAC1pG,IAAIM,EAAMN,EAAIM,IACd,MAAO,CAACjD,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,WAAW,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,eAAe,QAAQQ,MAAM,CAAC,IAAMiC,EAAIS,WAAW,IAAM,MAAM1D,EAAG,OAAO,CAACQ,YAAY,CAAC,YAAY,SAAS,CAACX,EAAIgB,GAAGhB,EAAIiB,GAAGmC,EAAI2B,sBAAsB,MAAK,KAAQ5E,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,mBAAmB,MAAQ,QAAQhB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,YAAY,MAAQ,QAAQhB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,cAAc,MAAQ,QAAQhB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,eAAe,MAAQ,QAAQhB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,SAAS,MAAQ,KAAK,MAAQ,OAAO8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GACtpB,IAAIM,EAAMN,EAAIM,IACd,MAAO,CAACjD,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,OAAO,UAAY,EAAE,IAAM,GAAGL,GAAG,CAAC,OAAS,SAAUwG,GAAO,OAAOtH,EAAIuH,oBACjFD,EACAlE,EACAgB,EAAKtM,KACLuP,EAAQvD,SACJ1C,MAAM,CAACb,MAAO6C,EAAU,OAAElN,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAK8B,EAAK,SAAU/B,IAAMb,WAAW,oBAAoB,MAAK,KAAQL,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,WAAW,MAAQ,QAAQhB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,MAAQ,MAAM8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASqE,GAAO,MAAO,CAACrH,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,OAAO,KAAO,SAAS,KAAO,kBAAkBL,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIyH,iBACjaD,EAAMpE,IACNgB,EAAKtM,KACLuP,EAAQvD,UACL,CAAC9D,EAAIgB,GAAG,YAAY,MAAK,MAAS,IAAI,MAAK,MAAKhB,EAAIa,MAAM,IAAI,GAAGV,EAAG,cAAc,CAACgB,MAAM,CAAC,MAAQ,KAAK,KAAO,WAAW,CAAChB,EAAG,eAAe,CAACQ,YAAY,CAAC,OAAS,SAAS,CAAEX,EAAI0H,eAAerQ,OAAS,EAAG2I,EAAImE,GAAInE,EAAkB,gBAAE,SAASoE,EAAKxJ,GAAO,OAAOuF,EAAG,MAAM,CAACnJ,IAAI4D,GAAO,CAACuF,EAAG,IAAI,CAACQ,YAAY,CAAC,cAAc,SAAS,CAACX,EAAIgB,GAAGhB,EAAIiB,GAAGmD,EAAKrI,SAASoE,EAAG,WAAW,CAACQ,YAAY,CAAC,MAAQ,QAAQQ,MAAM,CAAC,KAAOiD,EAAK7D,MAAM,OAAS,GAAG,aAAa,QAAQ,CAACJ,EAAG,kBAAkB,CAACgB,MAAM,CAAC,MAAQ,OAAO,cAAc,IAAI8B,YAAYjD,EAAIkD,GAAG,CAAC,CAAClM,IAAI,UAAUmM,GAAG,SAASL,GAC7jB,IAAIM,EAAMN,EAAIM,IAC5C,MAAO,CAACjD,EAAG,MAAM,CAACQ,YAAY,CAAC,QAAU,OAAO,cAAc,WAAW,CAACR,EAAG,MAAM,CAACQ,YAAY,CAAC,MAAQ,OAAO,eAAe,OAAOQ,MAAM,CAAC,IAAMiC,EAAIS,WAAW,IAAM,MAAM1D,EAAG,OAAO,CAACQ,YAAY,CAAC,YAAY,SAAS,CAACX,EAAIgB,GAAGhB,EAAIiB,GAAGmC,EAAI2B,sBAAsB,MAAK,KAAQ5E,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,MAAQ,SAAShB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,YAAY,MAAQ,KAAK,MAAQ,SAAShB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,cAAc,MAAQ,KAAK,MAAQ,SAAShB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,eAAe,MAAQ,KAAK,MAAQ,SAAShB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,SAAS,MAAQ,KAAK,MAAQ,SAAShB,EAAG,kBAAkB,CAACgB,MAAM,CAAC,KAAO,WAAW,MAAQ,KAAK,MAAQ,UAAU,IAAI,MAAKnB,EAAIa,MAAM,IAAI,IAAI,IAAI,KAAKV,EAAG,MAAM,CAACO,YAAY,gBAAgBS,MAAM,CAAC,KAAO,UAAU0E,KAAK,UAAU,CAAC1F,EAAG,MAAM,CAACO,YAAY,eAAe,CAACP,EAAG,OAAO,CAACH,EAAIgB,GAAG,WAAWb,EAAG,OAAO,CAACQ,YAAY,CAAC,MAAQ,MAAM,eAAe,SAAS,CAACX,EAAIgB,GAAG,IAAIhB,EAAIiB,GAAGjB,EAAI2H,iBAAiB,SAASxH,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQd,EAAI4H,kBAAkB,CAAC5H,EAAIgB,GAAG,QAAQb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,WAAWL,GAAG,CAAC,MAAQd,EAAI6H,mBAAmB,CAAC7H,EAAIgB,GAAG,UAAU,KAAKb,EAAG,YAAY,CAACgB,MAAM,CAAC,MAAQ,SAAS,QAAUnB,EAAI8H,kBAAkB,kBAAiB,EAAK,MAAQ,OAAOhH,GAAG,CAAC,iBAAiB,SAASC,GAAQf,EAAI8H,kBAAkB/G,KAAU,CAACZ,EAAG,UAAU,CAACgB,MAAM,CAAC,MAAQnB,EAAI+H,mBAAmB,CAAC5H,EAAG,YAAY,CAACgB,MAAM,CAAC,UAAY,GAAG,YAAc,QAAQC,MAAM,CAACb,MAAOP,EAAI+H,iBAA6B,aAAE7R,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAI+H,iBAAkB,eAAgB1G,IAAMb,WAAW,kCAAkCR,EAAImE,GAAInE,EAAI+H,iBAA6B,cAAE,SAAS3D,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,EAAK7D,YAAW,GAAGJ,EAAG,YAAY,CAACgB,MAAM,CAAC,YAAc,QAAQL,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOf,EAAIgF,gBAAgBhF,EAAI+H,iBAAkBhH,KAAUK,MAAM,CAACb,MAAOP,EAAI+H,iBAA4B,YAAE7R,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAI+H,iBAAkB,cAAe1G,IAAMb,WAAW,iCAAiCR,EAAImE,GAAInE,EAAI+H,iBAA0B,WAAE,SAAS3D,GAAM,OAAOjE,EAAG,YAAY,CAACnJ,IAAIoN,EAAK7D,MAAMY,MAAM,CAAC,MAAQiD,EAAKN,MAAM,MAAQM,QAAU,GAAGjE,EAAG,WAAW,CAACgB,MAAM,CAAC,YAAc,OAAO,SAAW,IAAIC,MAAM,CAACb,MAAOP,EAAI+H,iBAA6B,aAAE7R,SAAS,SAAUmL,GAAMrB,EAAIsB,KAAKtB,EAAI+H,iBAAkB,eAAgB1G,IAAMb,WAAW,oCAAoC,GAAGL,EAAG,MAAM,CAACO,YAAY,gBAAgBS,MAAM,CAAC,KAAO,UAAU0E,KAAK,UAAU,CAAC1F,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,QAAQL,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAI8H,mBAAoB,KAAS,CAAC9H,EAAIgB,GAAG,QAAQb,EAAG,YAAY,CAACgB,MAAM,CAAC,KAAO,WAAWL,GAAG,CAAC,MAAQd,EAAIgI,iBAAiB,CAAChI,EAAIgB,GAAG,UAAU,IAAI,IAAI,GAAGhB,EAAIa,MAAM,IACxwFoH,EAAkB,G,sXC4wBtB,GACEnQ,KAAM,GACNoQ,MAAO,CAAC,IACRvJ,KAHF,WAII,MAAO,CACLwJ,SAAS,EACTC,qBAAqB,EACrBlH,cAAe,CACbpJ,KAAM,GACNuQ,OAAQ,GACRC,OAAQ,IAEVC,eAAgB,CACdzQ,KAAM,CAAC,CAAf,gDAIMqO,aAAc,iDACdqC,SAAU,CAAC,MAAO,MAAO,QAEzBC,cAAe,GAGf1Q,MAAO,KACP2Q,IAAK,KAELnH,SAAS,EACTE,SAAS,EACTkH,WAAY,KACZC,UAAW,GACXC,SAAS,EAETlG,YAAY,EACZ/B,oBAAoB,EACpBkI,UAAW,GAEXC,eAAgB,CACd1F,QAAS,GACTvL,KAAM,GACNkR,MAAO,IAGTC,cAAe,CACbnF,MAAO,GACPF,QAAQ,EACRsF,SAAU,IAGZxB,eAAgB,GAEhBN,gBAAiB,GAEjBW,iBAAkB,GAElBtE,aAAc,GAEdC,aAAc,CACZK,SAAU,WACVD,MAAO,SAGTlB,qBAAqB,EAErBkE,eAAgB,GAChBD,qBAAqB,EACrBF,eAAe,EACfT,SAAU,GAEVH,gBAAiB,CAEfjO,KAAM,GACNuL,QAAS,GACT8F,SAAU,GACVH,MAAO,IAGTzF,oBAAoB,EAEpByD,eAAgB,OAEhBoC,cAAe,GAEfC,eAAgB,GAEhBzE,YAAa,GAEbX,KAAM,CACJqF,UAAW,EACXC,SAAU,GACVtE,MAAO,EACPuE,UAAW,GACXC,eAAgB,KAChBC,cAAe,KACfC,WAAY,MAGdzC,yBAAyB,EAEzB0C,0BAA0B,EAE1BzC,iBAAkB,QAGlBgC,SAAU,GACVU,YAAa,GACblC,gBAAiB,EACjBmC,YAAa,GACbC,gBAAiB,GAGjBjC,mBAAmB,EAGnBkC,SAAU,KACVC,cAAe,GAEfC,WAAW,EAEXC,WAAW,EAIXxI,eAAe,EAEfE,cAAc,EAEd8D,sBAAsB,EAEtBC,cAAe,GAGfwE,eAAgB,GAGhBC,cAAe,GACf7G,WAAW,EACXX,UAAU,EAGV4C,YAAa,EAGb9H,MAAO,EACP2E,OAAQ,EACRC,OAAQ,EACRC,MAAO,CACLC,EAAG,GACHC,EAAG,IAELN,WAAY,EACZC,YAAa,EACbF,MAAO,GACPD,KAAM,QACNoI,aAAa,EAEblF,eAAe,EACfI,kBAAkB,EAClB+E,aAAc,CACpB,CACQ,MAAR,OACQ,MAAR,GAEA,CACQ,MAAR,OACQ,MAAR,GAEA,CACQ,MAAR,OACQ,MAAR,GAEA,CACQ,MAAR,MACQ,MAAR,IAEA,CACQ,MAAR,MACQ,MAAR,MAGMC,WAAY,KAIhBC,QAvLF,WAwLIpU,KAAKqU,cACLrU,KAAKsU,kBACLtU,KAAKuU,qBACLvU,KAAKwU,uBAGPC,WAAY,CACVC,WAAJ,QAGEC,SAAU,CACRjI,kBADJ,WAEM,OAAO1M,KAAKyS,UAAUmC,QAAO,SAAnC,0BAIEC,YAxMF,aA0MEC,QA1MF,WA2MI9U,KAAK+U,QAIPC,cA/MF,WAgNIC,cAAcjV,KAAK2T,WAKrBuB,QAAS,CACP,YADJ,WACA,iLACA,qBADA,SAGA,2BACA,2BACA,WALA,cAGA,EAHA,OASA,gCACA,qBAEA,yBAZA,SAcA,yBAdA,cAcA,EAdA,iBAgBA,WAhBA,yBAkBA,kBAlBA,QAkBA,EAlBA,OAmBA,yBACA,wBApBA,+CAkEI,YAnEJ,WAmEA,2KACA,qBADA,SAEA,kBAFA,mBAEA,EAFA,EAEA,KACA,kBACA,yBAJA,wBAKA,mDACA,uLACA,qLACA,KACA,qMAGA,cACA,KAJA,SAKA,kBALA,gBAKA,EALA,EAKA,KACA,uBACA,4BACA,2BACA,kCACA,gCACA,sCACA,oCACA,0BACA,yBACA,UAfA,qDAiBA,uBAjBA,iHAFA,SAsBA,eAtBA,OAuBA,aACA,eACA,YAzBA,kGADA,SA4BA,eA5BA,kGANA,UAoCA,eApCA,QAqCA,yBACA,aAtCA,+CAyCIpG,iBA5GJ,WA6GM9O,KAAKiU,aAAejU,KAAKiU,YACzBjU,KAAKmV,oBAEPA,iBAhHJ,WAiHMnV,KAAK+L,WAAa/L,KAAKoV,IAAIC,cAAc,iBAAiBC,YAC1DtV,KAAKgM,YAAchM,KAAKoV,IAAIC,cAAc,iBAAiBE,cAE7DvG,aApHJ,WAqHWhP,KAAKmP,mBACRnP,KAAK+O,eAAgB,IAIzBM,kBA1HJ,SA0HA,GACMrP,KAAKsH,MAAQI,WAAWwC,EAAMsL,QAAQ,IACtCxV,KAAK+L,WACX,+DACM/L,KAAKgM,YACX,gEAEQhM,KAAKoP,YADM,GAATlF,EACqC,IAApBxC,WAAWwC,GAEoB,IAA/BxC,WAAWwC,EAAMsL,QAAQ,IAG9CxV,KAAK0B,MAAM+T,OAAOvL,GAClBlK,KAAKmP,kBAAmB,EACxBnP,KAAK+O,eAAgB,GAGvBE,kBA3IJ,WA6IM,IAAN,oBACA,OAEMjP,KAAKsH,MAAQI,WAAWgO,EAASF,QAAQ,IACzCxV,KAAK+L,WACX,+DACM/L,KAAKgM,YACX,gEAEQhM,KAAKoP,YADS,GAAZsG,EACwC,IAAvBhO,WAAWgO,GAEuB,IAAlChO,WAAWgO,EAASF,QAAQ,IAGjDxV,KAAK0B,MAAM+T,OAAOC,IAEpBxG,eA7JJ,WA+JM,IAAN,oBACA,OACMyG,QAAQC,IAAIC,GACZ7V,KAAKsH,MAAQI,WAAWgO,EAASF,QAAQ,IACzCxV,KAAK+L,WACX,+DACM/L,KAAKgM,YACX,gEAEQhM,KAAKoP,YADS,GAAZsG,EACwC,IAAvBhO,WAAWgO,GAEuB,IAAlChO,WAAWgO,EAASF,QAAQ,IAGjDxV,KAAK0B,MAAM+T,OAAOC,IAEpBI,cA/KJ,WA+KA,WACM9V,KAAKwS,SAAWxS,KAAKwS,QAErBxS,KAAKuS,UAAUlO,SAAQ,SAA7B,GACQ/B,EAAKyT,KAAK,UAAW,EAA7B,aAGIC,YAtLJ,WAuLMhW,KAAK8S,SAAW,GAChB,IAAImD,EAAOjW,KAAK0B,MAAMwU,SACtBlW,KAAK8S,SAAWmD,GAElB,KA3LJ,WA2LA,mLACA,gBACA,kBACA,cAEA,oBACA,+CACA,cACA,WACA,cACA,YACA,iBAGA,MACA,WACA,kBACA,MACA,CACA,aACA,aAEA,CACA,aACA,YACA,YAIA,aACA,SADA,SACA,GACA,MACA,aACA,eACA,oBACA,KACA,yBAQA,GACA,WACA,cACA,YACA,wBAGA,GACA,WACA,cACA,YACA,wBAGA,kBACA,eACA,yBACA,iBACA,SAEA,mDACA,oDAEA,oCACA,yCACA,IACA,KACA,SACA,KACA,SAGA,MACA,aACA,QACA,8BACA,iBADA,YACA,mBADA,aACA,cADA,KAEA,iCACA,cACA,yBACA,iCACA,gCACA,qCACA,6BACA,mCACA,mBAEA,OACA,gBACA,eACA,0BACA,yBACA,0BACA,4BACA,wBAEA,uBAGA,0BACA,wCAEA,sCACA,mBACA,oDAKA,oBACA,yBACA,gBACA,qDAEA,UAEA,qDACA,uDAGA,QACA,IACA,YACA,WACA,cAGA,IACA,YACA,cAGA,IACA,YAEA,IACA,YACA,cAGA,IACA,YACA,cAGA,IACA,YACA,cAIA,IACA,YACA,WACA,aAIA,YACA,+BAnKA,UAqKA,2BACA,oBACA,QAvKA,QA0KA,gDACA,gCACA,mCACA,KACA,mBACA,6BACA,aACA,aAGA,eAEA,4BACA,WACA,4BACA,wBAEA,2BACA,8BACA,cACA,sBACA,wBACA,cACA,gBACA,aAGA,eACA,gBACA,sDAIA,gBACA,qDACA,iBACA,wBAEA,cADA,KACA,MAEA,iBAEA,wDACA,iBACA,iCACA,aACA,yDACA,cACA,0DAEA,cADA,KACA,MAEA,oBAGA,uDACA,eACA,yBACA,OAEA,aACA,YACA,CACA,gBACA,MACA,OACA,eACA,cACA,iBACA,qBAIA,CACA,qBACA,MACA,IACA,YAQA,uDACA,aACA,mBAIA,qCACA,iCAEA,aACA,gBACA,sBACA,kBAEA,YAGA,qCACA,gCACA,iCAEA,kBAEA,gBACA,qDACA,yCAkCA,OAjCA,iCACA,SACA,KAyBA,OAxBA,gCACA,0BACA,uBACA,UACA,cACA,uBAIA,gCACA,0BACA,GACA,YACA,sBACA,4BACA,4BACA,0BACA,4BACA,+BAGA,uBAGA,KAEA,iCACA,qCACA,gCAEA,KAEA,0BACA,wCAEA,sCACA,mBACA,gDAEA,oBACA,sCAGA,yBAGA,YAEA,sCACA,wBACA,iCACA,aACA,sBACA,4BACA,4BACA,yCAIA,OAHA,cACA,2BAEA,KAEA,kBACA,qCACA,uCAEA,YAEA,wCACA,wBACA,iCAKA,OAJA,UAIA,KAEA,wCACA,wBACA,iCAKA,OAJA,UAIA,KAEA,yCACA,wBACA,iCAKA,OAJA,UAIA,KAGA,0CACA,sBACA,aACA,0BAGA,aACA,6BAKA,uEAGA,GAFA,gBACA,qDACA,4BACA,cACA,yCAkBA,OAjBA,iCACA,iCAaA,OAZA,uCAIA,OAHA,kBACA,uBAEA,KAEA,uCAIA,OAHA,kBACA,uBAEA,KAEA,MAGA,UAGA,CACA,wBACA,qDAEA,yCAGA,iEAKA,GAJA,gBACA,qDAEA,sBACA,aACA,GACA,4BACA,iCACA,CACA,wBACA,qDAEA,qCAEA,8BACA,yCAoBA,OAnBA,iCACA,iCAeA,OAdA,uCAIA,OAHA,kBACA,kCAEA,KAEA,uCAMA,OALA,kBACA,oBACA,oBACA,kCAEA,KAEA,MAGA,WAIA,yCAoBA,OAnBA,iCAiBA,OAhBA,uCAMA,OALA,iCACA,kBACA,0BAGA,KAEA,uCAMA,OALA,iCACA,kBACA,0BAGA,KAEA,KAEA,QAKA,kDAGA,GAFA,gBACA,qDACA,aACA,GACA,4BACA,iCACA,CACA,wBACA,qDAEA,qCAEA,8BACA,yCAkBA,OAjBA,iCACA,iCAaA,OAZA,uCAIA,OAHA,kBACA,kCAEA,KAEA,uCAIA,OAHA,kBACA,kCAEA,KAEA,MAGA,WAIA,yCAoBA,OAnBA,iCAiBA,OAhBA,uCAMA,OALA,iCACA,kBACA,0BAGA,KAEA,uCAMA,OALA,iCACA,kBACA,0BAGA,KAEA,KAEA,QAMA,wCACA,4BACA,+BAEA,oDACA,6BACA,qBAMA,GALA,mCACA,8BACA,gBACA,sDAEA,2BACA,0BACA,8CAEA,gCACA,wBACA,mBACA,wBACA,qDAEA,8BACA,oBACA,oDAGA,mBACA,0CAEA,cACA,OACA,gBACA,eACA,0BACA,yBACA,0BACA,6BAEA,mBACA,wBAEA,uCAKA,OAJA,sBACA,cACA,oBAEA,UAIA,iCACA,uBACA,0CAWA,YATA,OACA,uCAKA,OAJA,sBACA,cACA,oBAEA,MAGA,KAIA,+BACA,sCACA,yBACA,0BACA,gBACA,qDACA,sCACA,sCACA,mBACA,gDAEA,yBACA,kDAKA,oDACA,qBAKA,GAJA,mCACA,gBACA,sDAEA,wBACA,6CAEA,gCACA,wBACA,mBACA,wBACA,qDAEA,8BACA,oBACA,oDAEA,mBACA,0CAEA,cACA,OACA,gBACA,eACA,0BACA,yBACA,0BACA,6BAEA,mBACA,wBAEA,uCAKA,OAJA,sBACA,cACA,oBAEA,UAIA,iCACA,uBACA,0CAWA,YATA,OACA,uCAKA,OAJA,sBACA,cACA,oBAEA,MAGA,KAIA,+BACA,sCACA,gBACA,qDACA,sCACA,sCACA,mBACA,gDAEA,gCAMA,oDACA,yCAkBA,OAjBA,gCACA,iCACA,oEACA,6DAQA,OAPA,gCACA,cAEA,8BACA,sCAGA,KAEA,gBACA,qDACA,sCAEA,KAEA,cACA,gCACA,mCAIA,oDACA,yBACA,iEAGA,sCACA,sCACA,mEAEA,4BA3uBA,+CA8uBI9K,OAz6BJ,WA06BMnL,KAAK8T,WAAY,EACjB9T,KAAK0B,MAAMyU,QAEb9K,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,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,EAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,IAqEvgC,SAASC,EAAuBle,EAAQ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","file":"js/chunk-3874ef74.0934b7da.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAYAAADXYyzPAAAAAXNSR0IArs4c6QAAAf1JREFUSEvtljGLE0EUx/9vVlHvsqUBwSbcN/DNbiEWOTjlGpurxMZeLLxCtFCJ2NkIgt/A6goRDEQPxJUrApmZQrAVxMJObSQxkMyTWRJZ7+IlGxaxuIFll5n3f799b+bNDAFAs9k8NhwOj4fvsq3b7Q7KaoI9aa0visgLACtLOSB6Z61tltVSkiQPvfd3ywqL9vV6/WSn0xmW8VEEP4nj+HZR3O/3N8bj8UsALo7jC8Wx0Wh0ajAYfAt9y4Ivi8gOEV0zxuwUnTPzJQCvichYa9PimIiEn3YAxtbapEy0+RxPF1eWZaP94sPAwbbVaqnJ2y8F/ptoHrgsrGifR3wEnmZg0VRrrbdFZGuR1BPR1yiKblSSamb+AWB1EXC+ookqA/8EcCKUJBF9D869948BrAG4p5R6P+nbBrCulLpZVcSfAJwOj3OuHyDMHGr8nFJqwxjzJvRprR+JyC2l1JVKwGmaNrz3q9baD4X1cQDMzCtElDYajb1KwLPmdlbE/6SOj8D7p+P/muNw6rTb7S0RWQdwHcBnIgql8Mo593HO/r5GRJsA7ojIWSJ6CuCtMeY5EclUOzNiZg6H/t6B9CxwzWHmoPvj0hD8RFF0vtfrdeeBw/3rAYAzvw2JvIg8c87tHhZxkiSbInJVRPKzerJFfqnVavezLAs7XN5+AT5vFPR//VyEAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAAAXNSR0IArs4c6QAAAQtJREFUSEtjZGBgYDA2NmZlYGAIZWBgUPn//z8jSIwC8IiRkXHl2bNnv4EMYjIxMdllambmrKOjQ4GZEK13795lOHjgwMW3b99aMBobG5urqKicWLBoEQMjI6WOhlhQVFDAcOLEiWBGIyOjQAcHh3VtHR0UuxpmQF9PD8OaNWtyRg1HCdLRYMGawkaDZTRYiC96RlML/tRiYmLib2Nru6Gjs5P4QCWgsqe7m2H9unVZjGZmZmqCgoI3lixbxsjLy0uxBT9//mRISU7+/+D+fUdwvWZiYtLAx8dXK6+gwERRVff/P8OTJ0/+v3nzZta5c+cy4JWmsbGxJAMDgzKltf////8fnT9//iHI0QC9IMlYXOXqjwAAAABJRU5ErkJggg==\"","import { Graph } from '@antv/x6';\nGraph.prototype.toSVG = function (callback, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.toSVG(callback, options);\n }\n};\nGraph.prototype.toPNG = function (callback, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.toPNG(callback, options);\n }\n};\nGraph.prototype.toJPEG = function (callback, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.toJPEG(callback, options);\n }\n};\nGraph.prototype.exportPNG = function (fileName, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.exportPNG(fileName, options);\n }\n};\nGraph.prototype.exportJPEG = function (fileName, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.exportJPEG(fileName, options);\n }\n};\nGraph.prototype.exportSVG = function (fileName, options) {\n const instance = this.getPlugin('export');\n if (instance) {\n instance.exportSVG(fileName, options);\n }\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DataUri, NumberExt, FunctionExt, Vector, Rectangle, Basecoat, Dom, } from '@antv/x6';\nimport './api';\nexport class Export extends Basecoat {\n constructor() {\n super();\n this.name = 'export';\n }\n get view() {\n return this.graph.view;\n }\n init(graph) {\n this.graph = graph;\n }\n exportPNG(fileName = 'chart', options = {}) {\n this.toPNG((dataUri) => {\n DataUri.downloadDataUri(dataUri, fileName);\n }, options);\n }\n exportJPEG(fileName = 'chart', options = {}) {\n this.toPNG((dataUri) => {\n DataUri.downloadDataUri(dataUri, fileName);\n }, options);\n }\n exportSVG(fileName = 'chart', options = {}) {\n this.toSVG((svg) => {\n DataUri.downloadDataUri(DataUri.svgToDataUrl(svg), fileName);\n }, options);\n }\n toSVG(callback, options = {}) {\n this.notify('before:export', options);\n const rawSVG = this.view.svg;\n const vSVG = Vector.create(rawSVG).clone();\n let clonedSVG = vSVG.node;\n const vStage = vSVG.findOne(`.${this.view.prefixClassName('graph-svg-stage')}`);\n const viewBox = options.viewBox || this.graph.graphToLocal(this.graph.getContentBBox());\n const dimension = options.preserveDimensions;\n if (dimension) {\n const size = typeof dimension === 'boolean' ? viewBox : dimension;\n vSVG.attr({\n width: size.width,\n height: size.height,\n });\n }\n vSVG\n .removeAttribute('style')\n .attr('viewBox', [viewBox.x, viewBox.y, viewBox.width, viewBox.height].join(' '));\n vStage.removeAttribute('transform');\n // Stores all the CSS declarations from external stylesheets to the\n // `style` attribute of the SVG document nodes.\n // This is achieved in three steps.\n // -----------------------------------\n // 1. Disabling all the stylesheets in the page and therefore collecting\n // only default style values. This, together with the step 2, makes it\n // possible to discard default CSS property values and store only those\n // that differ.\n //\n // 2. Enabling back all the stylesheets in the page and collecting styles\n // that differ from the default values.\n //\n // 3. Applying the difference between default values and the ones set by\n // custom stylesheets onto the `style` attribute of each of the nodes\n // in SVG.\n if (options.copyStyles !== false) {\n const document = rawSVG.ownerDocument;\n const raws = Array.from(rawSVG.querySelectorAll('*'));\n const clones = Array.from(clonedSVG.querySelectorAll('*'));\n const styleSheetCount = document.styleSheets.length;\n const styleSheetsCopy = [];\n for (let k = styleSheetCount - 1; k >= 0; k -= 1) {\n // There is a bug (bugSS) in Chrome 14 and Safari. When you set\n // `stylesheet.disable = true` it will also remove it from\n // `document.styleSheets`. So we need to store all stylesheets before\n // we disable them. Later on we put them back to `document.styleSheets`\n // if needed.\n // See the bug `https://code.google.com/p/chromium/issues/detail?id=88310`.\n styleSheetsCopy[k] = document.styleSheets[k];\n document.styleSheets[k].disabled = true;\n }\n const defaultComputedStyles = {};\n raws.forEach((elem, index) => {\n const computedStyle = window.getComputedStyle(elem, null);\n // We're making a deep copy of the `computedStyle` so that it's not affected\n // by that next step when all the stylesheets are re-enabled again.\n const defaultComputedStyle = {};\n Object.keys(computedStyle).forEach((property) => {\n defaultComputedStyle[property] =\n computedStyle.getPropertyValue(property);\n });\n defaultComputedStyles[index] = defaultComputedStyle;\n });\n // Copy all stylesheets back\n if (styleSheetCount !== document.styleSheets.length) {\n styleSheetsCopy.forEach((copy, index) => {\n document.styleSheets[index] = copy;\n });\n }\n for (let i = 0; i < styleSheetCount; i += 1) {\n document.styleSheets[i].disabled = false;\n }\n const customStyles = {};\n raws.forEach((elem, index) => {\n const computedStyle = window.getComputedStyle(elem, null);\n const defaultComputedStyle = defaultComputedStyles[index];\n const customStyle = {};\n Object.keys(computedStyle).forEach((property) => {\n if (!NumberExt.isNumber(property) &&\n computedStyle.getPropertyValue(property) !==\n defaultComputedStyle[property]) {\n customStyle[property] = computedStyle.getPropertyValue(property);\n }\n });\n customStyles[index] = customStyle;\n });\n clones.forEach((elem, index) => {\n Dom.css(elem, customStyles[index]);\n });\n }\n const stylesheet = options.stylesheet;\n if (typeof stylesheet === 'string') {\n const cDATASection = rawSVG\n .ownerDocument.implementation.createDocument(null, 'xml', null)\n .createCDATASection(stylesheet);\n vSVG.prepend(Vector.create('style', {\n type: 'text/css',\n }, [cDATASection]));\n }\n const format = () => {\n const beforeSerialize = options.beforeSerialize;\n if (typeof beforeSerialize === 'function') {\n const ret = FunctionExt.call(beforeSerialize, this.graph, clonedSVG);\n if (ret instanceof SVGSVGElement) {\n clonedSVG = ret;\n }\n }\n const dataUri = new XMLSerializer()\n .serializeToString(clonedSVG)\n .replace(/ /g, '\\u00a0');\n this.notify('after:export', options);\n callback(dataUri);\n };\n if (options.serializeImages) {\n const deferrals = vSVG.find('image').map((vImage) => {\n return new Promise((resolve) => {\n const url = vImage.attr('xlink:href') || vImage.attr('href');\n DataUri.imageToDataUri(url, (err, dataUri) => {\n if (!err && dataUri) {\n vImage.attr('xlink:href', dataUri);\n }\n resolve();\n });\n });\n });\n Promise.all(deferrals).then(format);\n }\n else {\n format();\n }\n }\n toDataURL(callback, options) {\n let viewBox = options.viewBox || this.graph.getContentBBox();\n const padding = NumberExt.normalizeSides(options.padding);\n if (options.width && options.height) {\n if (padding.left + padding.right >= options.width) {\n padding.left = padding.right = 0;\n }\n if (padding.top + padding.bottom >= options.height) {\n padding.top = padding.bottom = 0;\n }\n }\n const expanding = new Rectangle(-padding.left, -padding.top, padding.left + padding.right, padding.top + padding.bottom);\n if (options.width && options.height) {\n const width = viewBox.width + padding.left + padding.right;\n const height = viewBox.height + padding.top + padding.bottom;\n expanding.scale(width / options.width, height / options.height);\n }\n viewBox = Rectangle.create(viewBox).moveAndExpand(expanding);\n const rawSize = typeof options.width === 'number' && typeof options.height === 'number'\n ? { width: options.width, height: options.height }\n : viewBox;\n let scale = options.ratio ? parseFloat(options.ratio) : 1;\n if (!Number.isFinite(scale) || scale === 0) {\n scale = 1;\n }\n const size = {\n width: Math.max(Math.round(rawSize.width * scale), 1),\n height: Math.max(Math.round(rawSize.height * scale), 1),\n };\n {\n const imgDataCanvas = document.createElement('canvas');\n const context2D = imgDataCanvas.getContext('2d');\n imgDataCanvas.width = size.width;\n imgDataCanvas.height = size.height;\n const x = size.width - 1;\n const y = size.height - 1;\n context2D.fillStyle = 'rgb(1,1,1)';\n context2D.fillRect(x, y, 1, 1);\n const data = context2D.getImageData(x, y, 1, 1).data;\n if (data[0] !== 1 || data[1] !== 1 || data[2] !== 1) {\n throw new Error('size exceeded');\n }\n }\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n const context = canvas.getContext('2d');\n context.fillStyle = options.backgroundColor || 'white';\n context.fillRect(0, 0, size.width, size.height);\n try {\n context.drawImage(img, 0, 0, size.width, size.height);\n const dataUri = canvas.toDataURL(options.type, options.quality);\n callback(dataUri);\n }\n catch (error) {\n // pass\n }\n };\n this.toSVG((dataUri) => {\n img.src = `data:image/svg+xml,${encodeURIComponent(dataUri)}`;\n }, Object.assign(Object.assign({}, options), { viewBox, serializeImages: true, preserveDimensions: Object.assign({}, size) }));\n }\n toPNG(callback, options = {}) {\n this.toDataURL(callback, Object.assign(Object.assign({}, options), { type: 'image/png' }));\n }\n toJPEG(callback, options = {}) {\n this.toDataURL(callback, Object.assign(Object.assign({}, options), { type: 'image/jpeg' }));\n }\n notify(name, args) {\n this.trigger(name, args);\n this.graph.trigger(name, args);\n }\n dispose() {\n this.off();\n }\n}\n__decorate([\n Basecoat.dispose()\n], Export.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.loading),expression:\"loading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"app-container\"},[_c('div',{staticClass:\"tools_center\"},[_c('div',{staticClass:\"tools_head\"},[_c('div',{staticStyle:{\"margin-left\":\"20px\",\"height\":\"100%\",\"display\":\"flex\",\"align-items\":\"center\"}},[_c('div',[(!_vm.editOrderNameState)?_c('span',{on:{\"click\":function($event){_vm.editOrderNameState = true}}},[_vm._v(_vm._s(_vm.editOrderData.name))]):_vm._e(),(_vm.editOrderNameState)?_c('el-input',{staticStyle:{\"width\":\"180px\",\"margin-right\":\"10px\"},attrs:{\"size\":\"small\"},on:{\"blur\":function($event){_vm.editOrderNameState = false}},model:{value:(_vm.editOrderData.name),callback:function ($$v) {_vm.$set(_vm.editOrderData, \"name\", $$v)},expression:\"editOrderData.name\"}}):_vm._e()],1),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-around\"}},[(!_vm.canUndo)?_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"无法撤销\",\"src\":require(\"@/assets/SlnDesign/return0.png\")},on:{\"click\":_vm.onUndo}}):_vm._e(),(_vm.canUndo)?_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"撤销\",\"src\":require(\"@/assets/SlnDesign/return.png\")},on:{\"click\":_vm.onUndo}}):_vm._e(),(!_vm.canRedo)?_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"无法前进\",\"src\":require(\"@/assets/SlnDesign/next0.png\")},on:{\"click\":_vm.onRedo}}):_vm._e(),(_vm.canRedo)?_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"前进\",\"src\":require(\"@/assets/SlnDesign/next.png\")},on:{\"click\":_vm.onRedo}}):_vm._e(),_c('img',{staticStyle:{\"width\":\"18px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"矩形工具\",\"disabled\":!_vm.addShapeState,\"src\":require(\"@/assets/SlnDesign/shape.png\")},on:{\"click\":_vm.addShape}}),_c('img',{staticStyle:{\"width\":\"24px\",\"height\":\"18px\",\"margin\":\"5px 10px\"},attrs:{\"title\":\"文字工具\",\"disabled\":!_vm.addTextState,\"src\":require(\"@/assets/SlnDesign/text.png\")},on:{\"click\":_vm.openAddTextDialog}})])]),_c('div',{staticStyle:{\"margin-right\":\"10px\"}},[_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"20px\",\"margin\":\"5px 15px\"},attrs:{\"title\":\"退出\",\"src\":require(\"@/assets/SlnDesign/back.png\")},on:{\"click\":_vm.exitDesign}}),_c('img',{staticStyle:{\"width\":\"22px\",\"height\":\"22px\",\"margin\":\"5px 0\"},attrs:{\"title\":\"导出图片\",\"src\":require(\"@/assets/SlnDesign/checkOrder.png\")},on:{\"click\":_vm.exportImage}}),_c('img',{staticStyle:{\"width\":\"20px\",\"height\":\"20px\",\"margin\":\"5px 15px\"},attrs:{\"title\":\"生成方案\",\"src\":require(\"@/assets/SlnDesign/save.png\")},on:{\"click\":_vm.openSaveDesignDialog}})])]),_c('SketchRule',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowRuler),expression:\"isShowRuler\"}],attrs:{\"lang\":_vm.lang,\"thick\":_vm.thick,\"scale\":_vm.scale,\"width\":_vm.rulerWidth,\"height\":_vm.rulerHeight,\"startX\":_vm.startX,\"startY\":_vm.startY,\"horLineArr\":_vm.lines.h,\"verLineArr\":_vm.lines.v,\"cornerActive\":true}}),_c('div',{staticStyle:{\"position\":\"absolute\",\"left\":\"275px\",\"top\":\"10vh\"},attrs:{\"id\":\"container\"}}),(_vm.beginState == false)?_c('div',{staticStyle:{\"width\":\"100%\",\"position\":\"absolute\",\"left\":\"0px\",\"top\":\"10vh\",\"padding-top\":\"8vh\"}},[_c('img',{staticStyle:{\"width\":\"270px\",\"height\":\"240px\",\"margin\":\"30px auto\",\"display\":\"block\"},attrs:{\"src\":require(\"@/assets/SlnDesign/empty.png\")}}),_c('el-button',{staticStyle:{\"margin\":\"0 auto\",\"margin-top\":\"15px\",\"display\":\"block\",\"border-radius\":\"8px\"},attrs:{\"type\":\"text\"}},[_vm._v(\"暂无数据\")])],1):_vm._e()],1),_c('div',{staticClass:\"tools_box\"},[_c('div',{staticClass:\"floor_item\"},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"padding\":\"0 8px\",\"padding-top\":\"6px\"}},[_c('span',[_vm._v(\"楼层图纸\")]),_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){_vm.floorDialogVisiable = true}}},[_vm._v(\"+新建楼层\")])],1),_c('el-divider'),_c('div',{staticStyle:{\"margin-left\":\"6px\",\"height\":\"42vh\"}},[_c('el-scrollbar',{staticStyle:{\"height\":\"20vh\"}},[_c('div',{staticClass:\"floor_table\"},[_c('el-table',{key:_vm.isToggle,ref:\"singleTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.filteredFloorList,\"show-header\":false,\"highlight-current-row\":\"\"},on:{\"current-change\":_vm.handleCurrentChange}},[_c('el-table-column',{attrs:{\"prop\":\"fileUrl\",\"label\":\"图片\",\"show-header\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"30px\",\"margin-right\":\"6px\"},attrs:{\"src\":row.fileUrl,\"alt\":\"\"}}),_c('span',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(_vm._s(row.name))]),_c('el-button',{attrs:{\"type\":\"text\",\"icon\":\"el-icon-delete\"},on:{\"click\":function($event){return _vm.delFloor()}}})],1)]}}])})],1)],1)])],1)],1),_c('div',{staticClass:\"item\"},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"padding\":\"6px\",\"padding-bottom\":\"0\"}},[_c('span',[_vm._v(\"图纸清单\")]),_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){_vm.roomDialogVisiable = true}}},[_vm._v(\"+创建房间\")])],1),_c('el-divider'),_c('div',{staticStyle:{\"height\":\"86%\",\"overflow\":\"hidden\"}},[_c('el-scrollbar',{staticStyle:{\"height\":\"86%\"}},[_c('el-tree',{key:_vm.updateKey,staticClass:\"custom-tree\",staticStyle:{\"min-height\":\"86%\",\"width\":\"220px\",\"font-size\":\"13px\"},attrs:{\"data\":_vm.roomListData,\"node-key\":\"index\",\"default-expand-all\":\"\",\"props\":_vm.defaultProps,\"highlight-current-row\":\"\",\"expand-on-click-node\":false},on:{\"node-click\":_vm.handleNodeClick},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar node = ref.node;\nvar data = ref.data;\nreturn _c('span',{staticClass:\"custom-tree-node\"},[(!data.isRoot)?[_c('img',{staticStyle:{\"width\":\"15px\"},attrs:{\"src\":data.thumbImage}})]:_vm._e(),_c('span',{staticStyle:{\"width\":\"160px\",\"white-space\":\"normal\"}},[_vm._v(\" \"+_vm._s(node.label)+\" \"),(data.isRoot && data.children.length >= 0)?[_vm._v(\" (\"+_vm._s(data.children.length)+\") \")]:_vm._e()],2),_c('span',{staticClass:\"action-treebutton\"},[_c('el-button',{staticStyle:{\"padding\":\"0\"},attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function () { return _vm.delRoom(node, data); }}},[_c('i',{staticClass:\"el-icon-delete\"})])],1)],2)}}])})],1)],1)],1)]),_c('div',{staticClass:\"tools_box2\"},[_c('div',{staticClass:\"item\"},[_c('el-form',{attrs:{\"size\":\"mini\",\"inline\":true,\"model\":_vm.form}},[_c('el-row',{staticStyle:{\"margin-left\":\"10px\"}},[_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',[_c('el-select',{attrs:{\"clearable\":\"\",\"placeholder\":\"商品类型\"},on:{\"change\":_vm.typeSelectChange},model:{value:(_vm.form.ProductTypeId),callback:function ($$v) {_vm.$set(_vm.form, \"ProductTypeId\", $$v)},expression:\"form.ProductTypeId\"}},_vm._l((_vm.proTypeOption),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',[_c('el-select',{attrs:{\"clearable\":\"\",\"placeholder\":\"商品品牌\"},on:{\"change\":_vm.brandSelectChange},model:{value:(_vm.form.ProductBrandId),callback:function ($$v) {_vm.$set(_vm.form, \"ProductBrandId\", $$v)},expression:\"form.ProductBrandId\"}},_vm._l((_vm.proBrandOption),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1)],1),_c('el-form-item',[_c('el-input',{staticStyle:{\"margin\":\"0 10px\",\"width\":\"210px\"},attrs:{\"clearable\":\"\",\"placeholder\":\"产品名称/型号\",\"prefix-icon\":\"el-icon-search\"},nativeOn:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.searchProduct.apply(null, arguments)}},model:{value:(_vm.form.keyWorlds),callback:function ($$v) {_vm.$set(_vm.form, \"keyWorlds\", $$v)},expression:\"form.keyWorlds\"}})],1)],1),_c('el-scrollbar',{staticStyle:{\"height\":\"90%\"}},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"singleTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.productList,\"show-header\":false,\"highlight-current-row\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"thumbImage\",\"label\":\"图片\",\"show-header\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_c('div',[_c('img',{staticStyle:{\"width\":\"50px\",\"margin-right\":\"12px\"},attrs:{\"draggable\":\"\",\"src\":row.thumbImage,\"alt\":\"\"},on:{\"mousedown\":function($event){return _vm.startDrag(row, $event)}}}),_c('div',{staticStyle:{\"padding\":\"5px 0\",\"text-align\":\"center\"}},[_vm._v(\" ¥\"+_vm._s(row.productPrice)+\" \")])]),_c('div',{staticStyle:{\"line-height\":\"20px\"}},[_c('div',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(_vm._s(row.productName))]),_c('el-select',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"placeholder\":\"商品型号\",\"size\":\"mini\"},model:{value:(row.modelName),callback:function ($$v) {_vm.$set(row, \"modelName\", $$v)},expression:\"row.modelName\"}},_vm._l((row.modelOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{staticStyle:{\"margin\":\"5px 0\"},attrs:{\"placeholder\":\"商品规格\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.attributeChange(row, $event)}},model:{value:(row.productSpec),callback:function ($$v) {_vm.$set(row, \"productSpec\", $$v)},expression:\"row.productSpec\"}},_vm._l((row.attribute),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item}})}),1),_c('el-input-number',{staticStyle:{\"width\":\"100%\"},attrs:{\"precision\":0,\"size\":\"mini\",\"min\":1},model:{value:(row.number),callback:function ($$v) {_vm.$set(row, \"number\", $$v)},expression:\"row.number\"}})],1)])]}}])})],1),(_vm.productList.length != _vm.form.total)?_c('el-button',{staticStyle:{\"margin-left\":\"90px\"},attrs:{\"type\":\"text\"},on:{\"click\":_vm.moreListData}},[_vm._v(\"加载更多\")]):_c('p',{staticStyle:{\"margin-left\":\"84px\",\"font-size\":\"13px\",\"color\":\"#666666\"}},[_vm._v(\"已经到底了\")])],1)],1)]),(_vm.beginState != false)?_c('div',{staticClass:\"tools_floatfoot\"},[_c('div',{staticClass:\"tools_floatfoot1\",on:{\"click\":_vm.changeRulerState}},[_c('img',{attrs:{\"src\":require(\"@/assets/SlnDesign/rulers.png\"),\"alt\":\"\"}})]),_c('div',{staticClass:\"tools_floatfoot2\",on:{\"mouseover\":function($event){_vm.scaleBtnState = true},\"mouseleave\":_vm.showScaleBtn}},[(_vm.scaleBtnState)?_c('div',[_c('i',{staticClass:\"el-icon-minus\",on:{\"click\":_vm.scaleReduceChange}}),_c('i',{staticClass:\"el-icon-plus\",staticStyle:{\"margin\":\"0 10px\"},on:{\"click\":_vm.scaleAddChange}})]):_vm._e(),(!_vm.selectScaleState)?_c('span',{on:{\"mouseover\":function($event){_vm.selectScaleState = true}}},[_vm._v(_vm._s(_vm.canvasScale)+\"%\")]):_vm._e(),(_vm.selectScaleState)?_c('el-select',{attrs:{\"value\":_vm.canvasScale + '%',\"placeholder\":\"请选择\"},on:{\"change\":_vm.selectScaleChange}},_vm._l((_vm.scaleOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1):_vm._e()],1)]):_vm._e(),_c('el-dialog',{attrs:{\"title\":\"添加文字\",\"visible\":_vm.addTextDialogVisible,\"width\":\"36%\"},on:{\"update:visible\":function($event){_vm.addTextDialogVisible=$event}}},[_c('el-form',[_c('el-form-item',{staticStyle:{\"width\":\"540px\"},attrs:{\"label\":\"添加文字\"}},[_c('el-input',{staticStyle:{\"width\":\"420px\"},attrs:{\"placeholder\":\"请输入想要添加的文字\"},model:{value:(_vm.inputAddTexts),callback:function ($$v) {_vm.inputAddTexts=$$v},expression:\"inputAddTexts\"}})],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"info\"},on:{\"click\":function($event){_vm.addTextDialogVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.addText}},[_vm._v(\"确 定\")])],1)],1),_c('el-dialog',{attrs:{\"title\":\"创建楼层\",\"visible\":_vm.floorDialogVisiable,\"width\":\"36%\"},on:{\"update:visible\":function($event){_vm.floorDialogVisiable=$event}}},[_c('el-form',{attrs:{\"model\":_vm.createFloorData}},[_c('el-form-item',{staticStyle:{\"width\":\"310px\"},attrs:{\"label\":\"楼层名称\"}},[_c('el-input',{staticStyle:{\"width\":\"240px\"},attrs:{\"placeholder\":\"请输入楼层名称\"},model:{value:(_vm.createFloorData.name),callback:function ($$v) {_vm.$set(_vm.createFloorData, \"name\", $$v)},expression:\"createFloorData.name\"}})],1),_c('el-form-item',{staticStyle:{\"height\":\"148px\"},attrs:{\"label\":\"楼层户型图\"}},[_c('el-upload',{ref:\"upLoad\",class:{ hide: this.fileList.length >= 1 },attrs:{\"action\":_vm.uploadImgUrl,\"list-type\":\"picture-card\",\"limit\":1,\"on-exceed\":_vm.handleExceed,\"on-success\":_vm.handleUploadSuccess,\"on-error\":_vm.handleUploadError,\"before-upload\":_vm.handleBeforeUpload,\"on-progress\":_vm.uploadProcess,\"file-list\":_vm.fileList},scopedSlots:_vm._u([{key:\"file\",fn:function(ref){\nvar file = ref.file;\nreturn _c('div',{},[_c('img',{staticClass:\"el-upload-list__item-thumbnail\",attrs:{\"src\":file.data,\"alt\":\"\"}}),_c('span',{staticClass:\"el-upload-list__item-actions\"},[_c('span',{staticClass:\"el-upload-list__item-preview\",on:{\"click\":function($event){return _vm.handlePictureCardPreview(file)}}},[_c('i',{staticClass:\"el-icon-zoom-in\"})]),(!_vm.imageDisabled)?_c('span',{staticClass:\"el-upload-list__item-delete\",on:{\"click\":function($event){return _vm.handleRemove(file)}}},[_c('i',{staticClass:\"el-icon-delete\"})]):_vm._e()])])}}])},[_c('img',{attrs:{\"slot\":\"default\",\"src\":require(\"@/assets/SlnDesign/upload.png\"),\"alt\":\"\"},slot:\"default\"})]),_c('el-dialog',{attrs:{\"append-to-body\":true,\"visible\":_vm.uploadDialogVisible},on:{\"update:visible\":function($event){_vm.uploadDialogVisible=$event}}},[_c('img',{attrs:{\"width\":\"100%\",\"src\":_vm.dialogImageUrl,\"alt\":\"\"}})])],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"info\"},on:{\"click\":function($event){_vm.floorDialogVisiable = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.addNewFloor}},[_vm._v(\"确 定\")])],1)],1),_c('el-dialog',{attrs:{\"title\":\"创建房间\",\"visible\":_vm.roomDialogVisiable,\"width\":\"36%\"},on:{\"update:visible\":function($event){_vm.roomDialogVisiable=$event}}},[_c('el-form',{attrs:{\"model\":_vm.createFloorData}},[_c('el-form-item',{staticStyle:{\"width\":\"540px\"},attrs:{\"label\":\"房间名称\"}},[_c('el-input',{staticStyle:{\"width\":\"420px\"},attrs:{\"placeholder\":\"请输入房间名称\"},model:{value:(_vm.createRoomName),callback:function ($$v) {_vm.createRoomName=$$v},expression:\"createRoomName\"}})],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"info\"},on:{\"click\":function($event){_vm.roomDialogVisiable = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.addNewRoom}},[_vm._v(\"确 定\")])],1)],1),(_vm.saveDesignDialogVisible)?_c('el-dialog',{attrs:{\"visible\":_vm.saveDesignDialogVisible,\"width\":\"72%\"},on:{\"update:visible\":function($event){_vm.saveDesignDialogVisible=$event}}},[_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('div',{staticClass:\"save_box\"},[_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-bottom\":\"20px\"}},[_c('p',{staticStyle:{\"border\":\"2px solid #8c50ff\",\"width\":\"180px\",\"margin\":\"0 auto\",\"line-height\":\"36px\"}},[_vm._v(\" \"+_vm._s(_vm.editOrderData.name)+\" \")])]),_c('el-tabs',{model:{value:(_vm.designActiveName),callback:function ($$v) {_vm.designActiveName=$$v},expression:\"designActiveName\"}},[_c('el-tab-pane',{staticStyle:{\"height\":\"100%\",\"width\":\"99%\"},attrs:{\"label\":\"房间\",\"name\":\"first\"}},[_c('el-scrollbar',{staticStyle:{\"height\":\"59vh\"}},[(_vm.roomProductList.length > 0)?_vm._l((_vm.roomProductList),function(item,index){return _c('div',{key:index},_vm._l((item.rooms),function(element,index){return _c('div',{key:index},[_c('p',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\" \"+_vm._s(item.name)+\" \"+_vm._s(element.label)+\" \")]),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":element.children,\"border\":\"\",\"max-height\":\"500\"}},[_c('el-table-column',{attrs:{\"label\":\"商品名称\",\"show-header\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"42px\",\"margin-right\":\"20px\"},attrs:{\"src\":row.thumbImage,\"alt\":\"\"}}),_c('span',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(_vm._s(row.productName))])])]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"productBrandName\",\"label\":\"品牌\"}}),_c('el-table-column',{attrs:{\"prop\":\"modelName\",\"label\":\"型号\"}}),_c('el-table-column',{attrs:{\"prop\":\"productSpec\",\"label\":\"规格\"}}),_c('el-table-column',{attrs:{\"prop\":\"productPrice\",\"label\":\"价格\"}}),_c('el-table-column',{attrs:{\"prop\":\"number\",\"label\":\"数量\",\"width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('el-input-number',{attrs:{\"size\":\"mini\",\"precision\":0,\"min\":1},on:{\"change\":function (val) { return _vm.changeProductNumber(\n val,\n row,\n item.name,\n element.label\n ); }},model:{value:(row.number),callback:function ($$v) {_vm.$set(row, \"number\", $$v)},expression:\"row.number\"}})]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"allPrice\",\"label\":\"小计\"}}),_c('el-table-column',{attrs:{\"label\":\"操作\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"danger\",\"icon\":\"el-icon-delete\"},on:{\"click\":function($event){return _vm.DeleteNowProduct(\n scope.row,\n item.name,\n element.label\n )}}},[_vm._v(\"删除\")])]}}],null,true)})],1)],1)}),0)}):_vm._e()],2)],1),_c('el-tab-pane',{attrs:{\"label\":\"种类\",\"name\":\"second\"}},[_c('el-scrollbar',{staticStyle:{\"height\":\"59vh\"}},[(_vm.AllProductList.length > 0)?_vm._l((_vm.AllProductList),function(item,index){return _c('div',{key:index},[_c('p',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(item.type))]),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":item.value,\"border\":\"\",\"max-height\":\"500\"}},[_c('el-table-column',{attrs:{\"label\":\"商品名称\",\"show-header\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var row = ref.row;\nreturn [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"42px\",\"margin-right\":\"6px\"},attrs:{\"src\":row.thumbImage,\"alt\":\"\"}}),_c('span',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(_vm._s(row.productName))])])]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"productBrandName\",\"label\":\"品牌\",\"width\":\"150\"}}),_c('el-table-column',{attrs:{\"prop\":\"modelName\",\"label\":\"型号\",\"width\":\"210\"}}),_c('el-table-column',{attrs:{\"prop\":\"productSpec\",\"label\":\"规格\",\"width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"productPrice\",\"label\":\"价格\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"number\",\"label\":\"数量\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"allPrice\",\"label\":\"小计\",\"width\":\"100\"}})],1)],1)}):_vm._e()],2)],1)],1)],1)]),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('div',{staticClass:\"save_footer\"},[_c('span',[_vm._v(\"产品总额:\")]),_c('span',{staticStyle:{\"color\":\"red\",\"margin-right\":\"20px\"}},[_vm._v(\"¥\"+_vm._s(_vm.allproductPrice)+\".00\")]),_c('el-button',{attrs:{\"type\":\"info\"},on:{\"click\":_vm.closeSaveDialog}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.editNewdragOrder}},[_vm._v(\"确 定\")])],1)]),_c('el-dialog',{attrs:{\"title\":\"修改商品信息\",\"visible\":_vm.SpecDialogVisible,\"append-to-body\":true,\"width\":\"36%\"},on:{\"update:visible\":function($event){_vm.SpecDialogVisible=$event}}},[_c('el-form',{attrs:{\"model\":_vm.nowSelectProduct}},[_c('el-select',{attrs:{\"clearable\":\"\",\"placeholder\":\"商品型号\"},model:{value:(_vm.nowSelectProduct.productModel),callback:function ($$v) {_vm.$set(_vm.nowSelectProduct, \"productModel\", $$v)},expression:\"nowSelectProduct.productModel\"}},_vm._l((_vm.nowSelectProduct.modelOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-select',{attrs:{\"placeholder\":\"商品规格\"},on:{\"change\":function($event){return _vm.attributeChange(_vm.nowSelectProduct, $event)}},model:{value:(_vm.nowSelectProduct.productSpec),callback:function ($$v) {_vm.$set(_vm.nowSelectProduct, \"productSpec\", $$v)},expression:\"nowSelectProduct.productSpec\"}},_vm._l((_vm.nowSelectProduct.attribute),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item}})}),1),_c('el-input',{attrs:{\"placeholder\":\"商品价格\",\"disabled\":\"\"},model:{value:(_vm.nowSelectProduct.productPrice),callback:function ($$v) {_vm.$set(_vm.nowSelectProduct, \"productPrice\", $$v)},expression:\"nowSelectProduct.productPrice\"}})],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"info\"},on:{\"click\":function($event){_vm.SpecDialogVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.editNowProduct}},[_vm._v(\"确 定\")])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./edit.vue?vue&type=template&id=3dc78bc4&scoped=true&\"\nimport script from \"./edit.vue?vue&type=script&lang=js&\"\nexport * from \"./edit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./edit.vue?vue&type=style&index=0&id=3dc78bc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dc78bc4\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=style&index=0&id=3dc78bc4&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAAAAXNSR0IArs4c6QAABBFJREFUSEuNVW1oHFUUPffNJu6abA1o6Y8YFQtGWUl2Z2ZZP2qNINY22qTFqKhFpSCoBLR+FK3FqlUpVkEpiChSrUrrDz+KovSHIJpGuvNms+KqKCUgKKKiQjYJ2d2Z47xlE9aQZHNhYefNfWfeO/ecewUtYmBgIDY9PX0pya4gCEIAPxQKhT9b7ZOVEjKZzPlKqc8AXNKUVwOwW2v90kp7F4AdxzlLRLaGYdgjIgrA2yQPiMitJN9RSv1C0qzfBqBbKXVREAQbReRcAFWSJd/3zSEC88E6sG3bV4nIBwDOmT9FGIZXK6VeAbBea901v8F13X0knxSRLdHaXpKXN53cV0oN5vP53yWdTndZlvUzgDUAXiR5UikVzM3NfdPe3v4UgFEARQC/ArAAbIiAWavV1luWZX6G+zOVUrcAGAFwQmu9SRzHuRPAYZLP+b6/p5m3XC63plarvU5ySETOaLybFJH7Pc8z124Og3USQC4Wi51nHvYCeNpcbYnk+kbHcdpisViiXC6HpVKpvFzRHMc5COChIAiuFNu2DV/7AGzSWp9o3tTb25vs6Oi4V0RuIHmhiFRIficiR7XWRwEY+S2Ebdum2I+KyIZlgbPZ7MYwDN8HsK5ROMOxocM8mzhVq9W2F4tFs16PlsDZbDYbhuGXAGKGexE5pLX+q0HLxVERnwFwUyS9n4IgyE1MTPy7GmDLtu1vRaRXRLZ7nnd8MacjIyPW5OTkQZIPRDd4VWt9X0tg13W3kPwUwFta67sWgzqOMxg58ZiI7Ca5i2R3IpFYOzY2NrUiFY7jvADg4TAMr1VKeVpro4K6m2zb3mYK13i+LuLZmOQxkpt93/98RWDXdY+QvANAH4AxAF65XB5KJpODJI9EQHMkt/q+/4Vt2/eIyGsk7/Z9/3CrExsbj4ZheIVS6pHIddtMkYy1AUwDGNRaf21u4LruHpL7TY7W+qNWwKbJvAvgQDKZfKJcLr9JcgfJf5RS13ued6pJXua/Y1lWt+kPKwL39fV1tLW1nQbQGbXMXD6f/9513R3ValUXi8XSPKjrujtJviEixz3PG2qpikbCzaZIJE1D3+n7/ifzgKlUqj0ejz8YaXw/ySkRyWqtzUFaG6RhBKPNl41JAJwmOdFoRKZNnk3yj2htuFAojC/nvMdF5FkRGfY87+Nm3WYymX6llCnQZhHpbLz7jeQxks8vHlGO49QLD+Ay092GAXwI4D2t9e3LdC4rm82unZmZqZRKpb+XykmlUp3xeNz07Z5KpbJOzLCcmprSDd1+RXJcROqGWG1EIywhIjcaSZI85Pv+aH009ff3d8diMSP+a1YLtkRezZhldnZ2V6lUqvxvSqfT6QuUUj2WZZmhueqoVqvVRCLx4/j4+AJN/wFG+BQ+NfiyJwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASCAYAAABfJS4tAAAAAXNSR0IArs4c6QAAAqFJREFUOE+dlE1oE1EQx2d2tyahJXGRgoYUWkgoCRSvtbqbbm7ipR6sIK2IF0Hw4k0UuqCVHrx58yjeBD8QpCCyea8QgseCHtpDbNKPgGmahg1hs5v35BUT0pi0oXNa9v3fj5n/mxmEAYNSOsc5f4SIr3Vd/3TaNTxN0DonhKyHw+GpUqnEXddd0TTtGSKyfvcHBlNKy/F4XOWcQ6FQ4LZtrzLG7hiGUekFHxhMCDlIJBLnZVkGAd/b24P9/f1NRJzTdf1XN3wgsGVZiiRJf1rgFqRSqfDt7W0bAO52+94XnM1mg41G4wEA3OacX5ZlWZmcnASRcWfU63XI5/PMdd0XmqaZiMjFeU8wpfQGALwJhUKXVFXF4eFhQOxfnOd5Ld+/+Hy+xenp6ep/6rW1taeKojyPRCJHwEFD+L67uwvlcnldluVrx8CU0ic+n295YmICFUUZlHlMl8/noVKpPGyDCSGpoaGhb9FoVDorVGSdy+WgVqstHIEzmUzA87yN8fHxyMjIyJky7fD5o67rt47A6XT6saqqr8bGxtoVMMbAcRxwXRfEt4hQKNTzEUVnbG1tiYlctixryTRNhqZpSoZhFGKxWNjv94MQibGtVqseY+wnAOQQsQYA8/F4/Fx3u4le3tnZsRlj95LJ5IdWuZhOp68EAoFMNBqFYrEooEVEfImI7zRNO+jYFe3JE/+En//0m81m82YqlRJJtAMJIebo6OiSKPnw8PC7oijzMzMz5W6jO0e6w8+++wIppW/9fv9CvV7PhsNhIxaLOb1ejxBSSiQSFxqNhpg07jjOSjKZ7LvhBHiVc36VMTZlGMbvfi1BCPkaDAav27ZtN5vN+7Ozs+9Pah/hsSZJkqPr+o+ThJZlXZRleRERP2uatnFaT/4FgTtXwbhuP90AAAAASUVORK5CYII=\"","/*\n\tBased on rgbcolor.js by Stoyan Stefanov \n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('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']; // add ImageBitmap support,can blur texture source\n\n if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n w = img.width;\n h = img.height;\n }\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >>> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >>> shgSum;\n pixels[yi + 1] = gSum * mulSum >>> shgSum;\n pixels[yi + 2] = bSum * mulSum >>> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >>> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","import requestAnimationFrame from 'raf';\nimport RGBColor from 'rgbcolor';\nimport { SVGPathData } from 'svg-pathdata';\nimport { canvasRGBA } from 'stackblur-canvas';\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 * @returns Preset object.\n */ function offscreen() {\n let { DOMParser: DOMParserFallback } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n const preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas (width, height) {\n return new OffscreenCanvas(width, height);\n },\n async createImage (url) {\n const response = await fetch(url);\n const blob = await response.blob();\n const img = await createImageBitmap(blob);\n return img;\n }\n };\n if (typeof globalThis.DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\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 * @returns Preset object.\n */ function node(param) {\n let { DOMParser , canvas , fetch } = param;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n offscreen: offscreen,\n node: node\n});\n\n/**\n * HTML-safe compress white-spaces.\n * @param str - String to compress.\n * @returns String.\n */ function compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\n * HTML-safe left trim.\n * @param str - String to trim.\n * @returns String.\n */ function trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\n * HTML-safe right trim.\n * @param str - String to trim.\n * @returns String.\n */ function trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\n * String to numbers array.\n * @param str - Numbers string.\n * @returns Numbers array.\n */ function toNumbers(str) {\n const matches = str.match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm);\n return matches ? matches.map(parseFloat) : [];\n}\n/**\n * String to matrix value.\n * @param str - Numbers string.\n * @returns Matrix value.\n */ function toMatrixValue(str) {\n const numbers = toNumbers(str);\n const matrix = [\n numbers[0] || 0,\n numbers[1] || 0,\n numbers[2] || 0,\n numbers[3] || 0,\n numbers[4] || 0,\n numbers[5] || 0\n ];\n return matrix;\n}\n// Microsoft Edge fix\nconst allUppercase = /^[A-Z-]+$/;\n/**\n * Normalize attribute name.\n * @param name - Attribute name.\n * @returns Normalized attribute name.\n */ function normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n return name;\n}\n/**\n * Parse external URL.\n * @param url - CSS url string.\n * @returns Parsed URL.\n */ function parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n const urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url);\n if (!urlMatch) {\n return '';\n }\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 * @returns Normalized color.\n */ function normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n let rgbParts = 3;\n const normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat)=>(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\nconst attributeRegex = /(\\[[^\\]]+\\])/g;\nconst idRegex = /(#[^\\s+>~.[:]+)/g;\nconst classRegex = /(\\.[^\\s+>~.[:]+)/g;\nconst pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;\nconst pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi;\nconst pseudoClassRegex = /(:[^\\s+>~.[:]+)/g;\nconst elementRegex = /([^\\s+>~.[:]+)/g;\nfunction findSelectorMatch(selector, regex) {\n const matches = regex.exec(selector);\n if (!matches) {\n return [\n selector,\n 0\n ];\n }\n return [\n selector.replace(regex, ' '),\n matches.length\n ];\n}\n/**\n * Measure selector specificity.\n * @param selector - Selector to measure.\n * @returns Specificity.\n */ function getSelectorSpecificity(selector) {\n const specificity = [\n 0,\n 0,\n 0\n ];\n let currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n let delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex) // lgtm [js/useless-assignment-to-local]\n ;\n specificity[2] += delta;\n return specificity.join('');\n}\n\nconst PSEUDO_ZERO = 0.00000001;\n/**\n * Vector magnitude.\n * @param v\n * @returns Number result.\n */ function vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\n * Ratio between two vectors.\n * @param u\n * @param v\n * @returns Number result.\n */ function 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 * @param u\n * @param v\n * @returns Number result.\n */ function vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n split() {\n let separator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ' ';\n const { document , name } = this;\n return compressSpaces(this.getString()).trim().split(separator).map((value)=>new Property(document, name, value)\n );\n }\n hasValue(zeroIsValue) {\n const value = this.value;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n isString(regexp) {\n const { value } = this;\n const result = typeof value === 'string';\n if (!result || !regexp) {\n return result;\n }\n return regexp.test(value);\n }\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n const asString = this.getString();\n switch(true){\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n default:\n return false;\n }\n }\n setValue(value) {\n this.value = value;\n return this;\n }\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n return def;\n }\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n // @ts-expect-error Parse unknown value.\n return parseFloat(def);\n }\n const { value } = this;\n // @ts-expect-error Parse unknown value.\n let n = parseFloat(value);\n if (this.isString(/%$/)) {\n n /= 100;\n }\n return n;\n }\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n return String(def);\n }\n getColor(def) {\n let color = this.getString(def);\n if (this.isNormalizedColor) {\n return color;\n }\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n getDpi() {\n return 96 // TODO: compute?\n ;\n }\n getRem() {\n return this.document.rootEmSize;\n }\n getEm() {\n return this.document.emSize;\n }\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n getPixels(axisOrIsFontSize) {\n let processPercent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (!this.hasValue()) {\n return 0;\n }\n const [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [\n undefined,\n axisOrIsFontSize\n ] : [\n axisOrIsFontSize\n ];\n const { viewPort } = this.document.screen;\n switch(true){\n case this.isString(/vmin$/):\n return this.getNumber() / 100 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n case this.isString(/vmax$/):\n return this.getNumber() / 100 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n case this.isString(/vw$/):\n return this.getNumber() / 100 * viewPort.computeSize('x');\n case this.isString(/vh$/):\n return this.getNumber() / 100 * viewPort.computeSize('y');\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2;\n case this.isString(/px$/):\n return this.getNumber();\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1 / 72);\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n default:\n {\n const n = this.getNumber();\n if (processPercent && n < 1) {\n return n * viewPort.computeSize(axis);\n }\n return n;\n }\n }\n }\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n return this.getNumber() * 1000;\n }\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n switch(true){\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180);\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200);\n case this.isString(/rad$/):\n return this.getNumber();\n default:\n return this.getNumber() * (Math.PI / 180);\n }\n }\n getDefinition() {\n const asString = this.getString();\n const match = /#([^)'\"]+)/.exec(asString);\n const name = (match === null || match === void 0 ? void 0 : match[1]) || asString;\n return this.document.definitions[name];\n }\n getFillStyleDefinition(element, opacity) {\n let def = this.getDefinition();\n if (!def) {\n return null;\n }\n // gradient\n if (typeof def.createGradient === 'function' && 'getBoundingBox' in element) {\n return def.createGradient(this.document.ctx, element, opacity);\n }\n // pattern\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n const patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n if (def && patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n if (def) {\n return def.createPattern(this.document.ctx, element, opacity);\n }\n }\n return null;\n }\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n const key = this.getString();\n return Property.textBaselineMapping[key] || null;\n }\n addOpacity(opacity) {\n let value = this.getColor();\n const len = value.length;\n let commas = 0;\n // Simulate old RGBColor version, which can't parse rgba.\n for(let i = 0; i < len; i++){\n if (value[i] === ',') {\n commas++;\n }\n if (commas === 3) {\n break;\n }\n }\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n const color = new RGBColor(value);\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n return new Property(this.document, this.name, value);\n }\n constructor(document, name, value){\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n}\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nclass ViewPort {\n clear() {\n this.viewPorts = [];\n }\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n removeCurrent() {\n this.viewPorts.pop();\n }\n getRoot() {\n const [root] = this.viewPorts;\n if (!root) {\n return getDefault();\n }\n return root;\n }\n getCurrent() {\n const { viewPorts } = this;\n const current = viewPorts[viewPorts.length - 1];\n if (!current) {\n return getDefault();\n }\n return current;\n }\n get width() {\n return this.getCurrent().width;\n }\n get height() {\n return this.getCurrent().height;\n }\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n if (d === 'x') {\n return this.width;\n }\n if (d === 'y') {\n return this.height;\n }\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n constructor(){\n this.viewPorts = [];\n }\n}\nViewPort.DEFAULT_VIEWPORT_WIDTH = 800;\nViewPort.DEFAULT_VIEWPORT_HEIGHT = 600;\nfunction getDefault() {\n return {\n width: ViewPort.DEFAULT_VIEWPORT_WIDTH,\n height: ViewPort.DEFAULT_VIEWPORT_HEIGHT\n };\n}\n\nclass Point {\n static parse(point) {\n let defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n const [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n static parseScale(scale) {\n let defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;\n const [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n static parsePath(path) {\n const points = toNumbers(path);\n const len = points.length;\n const pathPoints = [];\n for(let i = 0; i < len; i += 2){\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n return pathPoints;\n }\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n applyTransform(transform) {\n const { x , y } = this;\n const xp = x * transform[0] + y * transform[2] + transform[4];\n const yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n constructor(x, y){\n this.x = x;\n this.y = y;\n }\n}\n\nclass Mouse {\n isWorking() {\n return this.working;\n }\n start() {\n if (this.working) {\n return;\n }\n const { screen , onClick , onMouseMove } = this;\n const canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n stop() {\n if (!this.working) {\n return;\n }\n const canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n runEvents() {\n if (!this.working) {\n return;\n }\n const { screen: document , events , eventElements } = this;\n const { style } = document.ctx.canvas;\n let element;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (style) {\n style.cursor = '';\n }\n events.forEach((param, i)=>{\n let { run } = param;\n element = eventElements[i];\n while(element){\n run(element);\n element = element.parent;\n }\n });\n // done running, clear\n this.events = [];\n this.eventElements = [];\n }\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n const { events , eventElements } = this;\n events.forEach((param, i)=>{\n let { x , y } = param;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n const { events , eventElements } = this;\n events.forEach((param, i)=>{\n let { x , y } = param;\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n mapXY(x, y) {\n const { window , ctx } = this.screen;\n const point = new Point(x, y);\n let element = ctx.canvas;\n while(element){\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n if (window === null || window === void 0 ? void 0 : window.scrollX) {\n point.x += window.scrollX;\n }\n if (window === null || window === void 0 ? void 0 : window.scrollY) {\n point.y += window.scrollY;\n }\n return point;\n }\n onClick(event) {\n const { x , y } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onclick',\n x,\n y,\n run (eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick();\n }\n }\n });\n }\n onMouseMove(event) {\n const { x , y } = this.mapXY(event.clientX, event.clientY);\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n run (eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove();\n }\n }\n });\n }\n constructor(screen){\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\nconst defaultWindow = typeof window !== 'undefined' ? window : null;\nconst defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n : undefined;\nclass Screen {\n wait(checker) {\n this.waits.push(checker);\n }\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n return this.readyPromise;\n }\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n const isReadyLock = this.waits.every((_)=>_()\n );\n if (isReadyLock) {\n this.waits = [];\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n setViewBox(param) {\n let { document , ctx , aspectRatio , width , desiredWidth , height , desiredHeight , minX =0 , minY =0 , refX , refY , clip =false , clipX =0 , clipY =0 } = param;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n const cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, '') // ignore defer\n ;\n const [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');\n const align = aspectRatioAlign || 'xMidYMid';\n const meetOrSlice = aspectRatioMeetOrSlice || 'meet';\n // calculate scale\n const scaleX = width / desiredWidth;\n const scaleY = height / desiredHeight;\n const scaleMin = Math.min(scaleX, scaleY);\n const scaleMax = Math.max(scaleX, scaleY);\n let finalDesiredWidth = desiredWidth;\n let finalDesiredHeight = desiredHeight;\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n const refXProp = new Property(document, 'refX', refX);\n const refYProp = new Property(document, 'refY', refY);\n const hasRefs = refXProp.hasValue() && refYProp.hasValue();\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n if (clip) {\n const scaledClipX = scaleMin * clipX;\n const 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 if (!hasRefs) {\n const isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n const isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n const isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n const isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2 - finalDesiredWidth / 2, 0);\n }\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2 - finalDesiredHeight / 2);\n }\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n }\n // scale\n switch(true){\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n }\n // translate\n ctx.translate(-minX, -minY);\n }\n start(element) {\n let { enableRedraw =false , ignoreMouse =false , ignoreAnimation =false , ignoreDimensions =false , ignoreClear =false , forceRedraw , scaleWidth , scaleHeight , offsetX , offsetY } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n const { mouse } = this;\n const frameDuration = 1000 / Screen.FRAMERATE;\n this.isReadyLock = false;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise((resolve)=>{\n this.resolveReady = resolve;\n });\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n if (!enableRedraw) {\n return;\n }\n let now = Date.now();\n let then = now;\n let delta = 0;\n const tick = ()=>{\n now = Date.now();\n delta = now - then;\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n this.intervalId = requestAnimationFrame(tick);\n };\n if (!ignoreMouse) {\n mouse.start();\n }\n this.intervalId = requestAnimationFrame(tick);\n }\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n this.mouse.stop();\n }\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n const { frameDuration } = this;\n const shouldUpdate1 = this.animations.reduce((shouldUpdate, animation)=>animation.update(frameDuration) || shouldUpdate\n , false);\n if (shouldUpdate1) {\n return true;\n }\n }\n // need update from redraw?\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n if (!this.isReadyLock && this.isReady()) {\n return true;\n }\n // need update from mouse events?\n if (this.mouse.hasEvents()) {\n return true;\n }\n return false;\n }\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n const { viewPort , ctx , isFirstRender } = this;\n const canvas = ctx.canvas;\n viewPort.clear();\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n }\n const widthStyle = element.getStyle('width');\n const heightStyle = element.getStyle('height');\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 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n let cWidth = canvas.clientWidth || canvas.width;\n let cHeight = canvas.clientHeight || canvas.height;\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n viewPort.setCurrent(cWidth, cHeight);\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n const viewBox = toNumbers(element.getAttribute('viewBox').getString());\n let xRatio = 0;\n let yRatio = 0;\n if (typeof scaleWidth === 'number') {\n const widthStyle = element.getStyle('width');\n if (widthStyle.hasValue()) {\n xRatio = widthStyle.getPixels('x') / scaleWidth;\n } else if (viewBox[2] && !isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n if (typeof scaleHeight === 'number') {\n const heightStyle = element.getStyle('height');\n if (heightStyle.hasValue()) {\n yRatio = heightStyle.getPixels('y') / scaleHeight;\n } else if (viewBox[3] && !isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n if (!xRatio) {\n xRatio = yRatio;\n }\n if (!yRatio) {\n yRatio = xRatio;\n }\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n const transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1 / xRatio, \", \").concat(1 / yRatio, \")\"));\n }\n // clear and render\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n element.render(ctx);\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n constructor(ctx, { fetch =defaultFetch$1 , window =defaultWindow } = {}){\n this.ctx = ctx;\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 if (!fetch) {\n throw new Error(\"Can't find 'fetch' in 'globalThis', please provide it via options\");\n }\n this.fetch = fetch;\n }\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\nScreen.FRAMERATE = 30;\nScreen.MAX_VIRTUAL_PIXELS = 30000;\n\nconst { defaultFetch } = Screen;\nconst DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : undefined;\nclass Parser {\n async parse(resource) {\n if (resource.startsWith('<')) {\n return this.parseFromString(resource);\n }\n return this.load(resource);\n }\n parseFromString(xml) {\n const parser = new this.DOMParser();\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n checkDocument(document) {\n const parserError = document.getElementsByTagName('parsererror')[0];\n if (parserError) {\n throw new Error(parserError.textContent || 'Unknown parse error');\n }\n return document;\n }\n async load(url) {\n const response = await this.fetch(url);\n const xml = await response.text();\n return this.parseFromString(xml);\n }\n constructor({ fetch =defaultFetch , DOMParser =DefaultDOMParser } = {}){\n if (!fetch) {\n throw new Error(\"Can't find 'fetch' in 'globalThis', please provide it via options\");\n }\n if (!DOMParser) {\n throw new Error(\"Can't find 'DOMParser' in 'globalThis', please provide it via options\");\n }\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n}\n\nclass Translate {\n apply(ctx) {\n const { x , y } = this.point;\n ctx.translate(x || 0, y || 0);\n }\n unapply(ctx) {\n const { x , y } = this.point;\n ctx.translate(-1 * x || 0, -1 * y || 0);\n }\n applyToPoint(point) {\n const { x , y } = this.point;\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n x || 0,\n y || 0\n ]);\n }\n constructor(_, point){\n this.type = 'translate';\n this.point = Point.parse(point);\n }\n}\n\nclass Rotate {\n apply(ctx) {\n const { cx , cy , originX , originY , angle } = this;\n const tx = cx + originX.getPixels('x');\n const ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { cx , cy , originX , originY , angle } = this;\n const tx = cx + originX.getPixels('x');\n const ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n const { cx , cy , angle } = this;\n const rad = angle.getRadians();\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n cx || 0,\n cy || 0 // this.p.y\n ]);\n point.applyTransform([\n Math.cos(rad),\n Math.sin(rad),\n -Math.sin(rad),\n Math.cos(rad),\n 0,\n 0\n ]);\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n -cx || 0,\n -cy || 0 // -this.p.y\n ]);\n }\n constructor(document, rotate, transformOrigin){\n this.type = 'rotate';\n const numbers = toNumbers(rotate);\n this.angle = new Property(document, 'angle', numbers[0]);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n this.cx = numbers[1] || 0;\n this.cy = numbers[2] || 0;\n }\n}\n\nclass Scale {\n apply(ctx) {\n const { scale: { x , y } , originX , originY } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { scale: { x , y } , originX , originY } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1 / x, 1 / y || x);\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n const { x , y } = this.scale;\n point.applyTransform([\n x || 0,\n 0,\n 0,\n y || 0,\n 0,\n 0\n ]);\n }\n constructor(_, scale, transformOrigin){\n this.type = 'scale';\n const scaleSize = Point.parseScale(scale);\n // Workaround for node-canvas\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n}\n\nclass Matrix {\n apply(ctx) {\n const { originX , originY , matrix } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { originX , originY , matrix } = this;\n const a = matrix[0];\n const b = matrix[2];\n const c = matrix[4];\n const d = matrix[1];\n const e = matrix[3];\n const f = matrix[5];\n const g = 0;\n const h = 0;\n const i = 1;\n const det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n constructor(_, matrix, transformOrigin){\n this.type = 'matrix';\n this.matrix = toMatrixValue(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = new Property(document, 'angle', skew);\n }\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [\n 1,\n 0,\n Math.tan(this.angle.getRadians()),\n 1,\n 0,\n 0\n ];\n }\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [\n 1,\n Math.tan(this.angle.getRadians()),\n 0,\n 1,\n 0,\n 0\n ];\n }\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\nfunction parseTransform(transform) {\n const [type = '', value = ''] = transform.split('(');\n return [\n type.trim(),\n value.trim().replace(')', '')\n ];\n}\nclass Transform {\n static fromElement(document, element) {\n const transformStyle = element.getStyle('transform', false, true);\n if (transformStyle.hasValue()) {\n const [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n if (transformOriginXProperty && transformOriginYProperty) {\n const transformOrigin = [\n transformOriginXProperty,\n transformOriginYProperty\n ];\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n }\n return null;\n }\n apply(ctx) {\n this.transforms.forEach((transform)=>transform.apply(ctx)\n );\n }\n unapply(ctx) {\n this.transforms.forEach((transform)=>transform.unapply(ctx)\n );\n }\n // TODO: applyToPoint unused ... remove?\n applyToPoint(point) {\n this.transforms.forEach((transform)=>transform.applyToPoint(point)\n );\n }\n constructor(document, transform1, transformOrigin){\n this.document = document;\n this.transforms = [];\n const data = parseTransforms(transform1);\n data.forEach((transform)=>{\n if (transform === 'none') {\n return;\n }\n const [type, value] = parseTransform(transform);\n const TransformType = Transform.transformTypes[type];\n if (TransformType) {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n getAttribute(name) {\n let createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n const attr = this.attributes[name];\n if (!attr && createIfNotExists) {\n const attr = new Property(this.document, name, '');\n this.attributes[name] = attr;\n return attr;\n }\n return attr || Property.empty(this.document);\n }\n getHrefAttribute() {\n let href;\n for(const key in this.attributes){\n if (key === 'href' || key.endsWith(':href')) {\n href = this.attributes[key];\n break;\n }\n }\n return href || Property.empty(this.document);\n }\n getStyle(name) {\n let createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false, skipAncestors = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n const style = this.styles[name];\n if (style) {\n return style;\n }\n const attr = this.getAttribute(name);\n if (attr.hasValue()) {\n this.styles[name] = attr // move up to me to cache\n ;\n return attr;\n }\n if (!skipAncestors) {\n const { parent } = this;\n if (parent) {\n const parentStyle = parent.getStyle(name);\n if (parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n if (createIfNotExists) {\n const style = new Property(this.document, name, '');\n this.styles[name] = style;\n return style;\n }\n return Property.empty(this.document);\n }\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n ctx.save();\n if (this.getStyle('mask').hasValue()) {\n const mask = this.getStyle('mask').getDefinition();\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n const filter = this.getStyle('filter').getDefinition();\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 ctx.restore();\n }\n setContext(_) {\n // NO RENDER\n }\n applyEffects(ctx) {\n // transform\n const transform = Transform.fromElement(this.document, this);\n if (transform) {\n transform.apply(ctx);\n }\n // clip\n const clipPathStyleProp = this.getStyle('clip-path', false, true);\n if (clipPathStyleProp.hasValue()) {\n const clip = clipPathStyleProp.getDefinition();\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n clearContext(_) {\n // NO RENDER\n }\n renderChildren(ctx) {\n this.children.forEach((child)=>{\n child.render(ctx);\n });\n }\n addChild(childNode) {\n const child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n matchesSelector(selector) {\n var ref;\n const { node } = this;\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n const styleClasses = (ref = node.getAttribute) === null || ref === void 0 ? void 0 : ref.call(node, 'class');\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n return styleClasses.split(' ').some((styleClass)=>\".\".concat(styleClass) === selector\n );\n }\n addStylesFromStyleDefinition() {\n const { styles , stylesSpecificity } = this.document;\n let styleProp;\n for(const selector in styles){\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n const style = styles[selector];\n const specificity = stylesSpecificity[selector];\n if (style) {\n for(const name in style){\n let existingSpecificity = this.stylesSpecificity[name];\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n if (specificity && specificity >= existingSpecificity) {\n styleProp = style[name];\n if (styleProp) {\n this.styles[name] = styleProp;\n }\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n removeStyles(element, ignoreStyles) {\n const toRestore1 = ignoreStyles.reduce((toRestore, name)=>{\n const styleProp = element.getStyle(name);\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n const value = styleProp.getString();\n styleProp.setValue('');\n return [\n ...toRestore,\n [\n name,\n value\n ]\n ];\n }, []);\n return toRestore1;\n }\n restoreStyles(element, styles) {\n styles.forEach((param)=>{\n let [name, value] = param;\n element.getStyle(name, true).setValue(value);\n });\n }\n isFirstChild() {\n var ref;\n return ((ref = this.parent) === null || ref === void 0 ? void 0 : ref.children.indexOf(this)) === 0;\n }\n constructor(document, node, captureTextNodes = false){\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.type = '';\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n if (!node || node.nodeType !== 1) {\n return;\n }\n // add attributes\n Array.from(node.attributes).forEach((attribute)=>{\n const nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n this.addStylesFromStyleDefinition();\n // add inline styles\n if (this.getAttribute('style').hasValue()) {\n const styles = this.getAttribute('style').getString().split(';').map((_)=>_.trim()\n );\n styles.forEach((style)=>{\n if (!style) {\n return;\n }\n const [name, value] = style.split(':').map((_)=>_.trim()\n );\n if (name) {\n this.styles[name] = new Property(document, name, value);\n }\n });\n }\n const { definitions } = document;\n const id = this.getAttribute('id');\n // add id\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this;\n }\n }\n Array.from(node.childNodes).forEach((childNode)=>{\n if (childNode.nodeType === 1) {\n this.addChild(childNode) // ELEMENT_NODE\n ;\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n const textNode = document.createTextNode(childNode);\n if (textNode.getText().length > 0) {\n this.addChild(textNode) // TEXT_NODE\n ;\n }\n }\n });\n }\n}\nElement.ignoreChildTypes = [\n 'title'\n];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n }\n}\n\nfunction wrapFontFamily(fontFamily) {\n const trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\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 * @param fontStyle\n * @returns CSS font style.\n */ function prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n const targetFontStyle = fontStyle.trim().toLowerCase();\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 default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n return '';\n }\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n * @param fontWeight\n * @returns CSS font weight.\n */ function prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n const targetFontWeight = fontWeight.trim().toLowerCase();\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 default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n return '';\n }\n}\nclass Font {\n static parse() {\n let font = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '', inherit = arguments.length > 1 ? arguments[1] : void 0;\n let fontStyle = '';\n let fontVariant = '';\n let fontWeight = '';\n let fontSize = '';\n let fontFamily = '';\n const parts = compressSpaces(font).trim().split(' ');\n const set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n parts.forEach((part)=>{\n switch(true){\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n set.fontStyle = true;\n break;\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n case !set.fontSize:\n if (part !== 'inherit') {\n fontSize = part.split('/')[0] || '';\n }\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n toString() {\n return [\n prepareFontStyle(this.fontStyle),\n this.fontVariant,\n prepareFontWeight(this.fontWeight),\n this.fontSize,\n // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)\n ].join(' ').trim();\n }\n constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit){\n const 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}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n get x() {\n return this.x1;\n }\n get y() {\n return this.y1;\n }\n get width() {\n return this.x2 - this.x1;\n }\n get height() {\n return this.y2 - this.y1;\n }\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n if (x < this.x1) {\n this.x1 = x;\n }\n if (x > this.x2) {\n this.x2 = x;\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 if (y < this.y1) {\n this.y1 = y;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n addX(x) {\n this.addPoint(x, 0);\n }\n addY(y) {\n this.addPoint(0, y);\n }\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n const { x1 , y1 , x2 , y2 } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n bezierCurveAdd(forX, p0, p1, p2, p3) {\n const b = 6 * p0 - 12 * p1 + 6 * p2;\n const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n const c = 3 * p1 - 3 * p0;\n if (a === 0) {\n if (b === 0) {\n return;\n }\n const t = -c / b;\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 return;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) {\n return;\n }\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\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 const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\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 }\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n const cp1x = p0x + 2 / 3 * (p1x - p0x) // CP1 = QP0 + 2/3 *(QP1-QP0)\n ;\n const cp1y = p0y + 2 / 3 * (p1y - p0y) // CP1 = QP0 + 2/3 *(QP1-QP0)\n ;\n const cp2x = cp1x + 1 / 3 * (p2x - p0x) // CP2 = CP1 + 1/3 *(QP2-QP0)\n ;\n const 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 isPointInBox(x, y) {\n const { x1 , y1 , x2 , y2 } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n constructor(x1 = Number.NaN, y1 = Number.NaN, x2 = Number.NaN, y2 = Number.NaN){\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n}\n\nclass RenderedElement extends Element {\n calculateOpacity() {\n let opacity = 1;\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let element = this;\n while(element){\n const opacityStyle = element.getStyle('opacity', false, true) // no ancestors on style call\n ;\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n element = element.parent;\n }\n return opacity;\n }\n setContext(ctx) {\n let fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (!fromMeasure) {\n // fill\n const fillStyleProp = this.getStyle('fill');\n const fillOpacityStyleProp = this.getStyle('fill-opacity');\n const strokeStyleProp = this.getStyle('stroke');\n const strokeOpacityProp = this.getStyle('stroke-opacity');\n if (fillStyleProp.isUrlDefinition()) {\n const fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\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 const fillStyle = fillStyleProp.getColor();\n if (fillStyle !== 'inherit') {\n ctx.fillStyle = fillStyle === 'none' ? 'rgba(0,0,0,0)' : fillStyle;\n }\n }\n if (fillOpacityStyleProp.hasValue()) {\n const fillStyle = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n ctx.fillStyle = fillStyle;\n }\n // stroke\n if (strokeStyleProp.isUrlDefinition()) {\n const strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\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 const strokeStyle = strokeStyleProp.getString();\n if (strokeStyle !== 'inherit') {\n ctx.strokeStyle = strokeStyle === 'none' ? 'rgba(0,0,0,0)' : strokeStyle;\n }\n }\n if (strokeOpacityProp.hasValue()) {\n const strokeStyle = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n ctx.strokeStyle = strokeStyle;\n }\n const strokeWidthStyleProp = this.getStyle('stroke-width');\n if (strokeWidthStyleProp.hasValue()) {\n const newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n const strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n const strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n const strokeMiterlimitProp = this.getStyle('stroke-miterlimit');\n // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n const strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n const strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n }\n // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // // ?\n // ctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n const gaps = toNumbers(strokeDasharrayStyleProp.getString());\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps;\n }\n const offset = strokeDashoffsetProp.getPixels();\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset;\n } else // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset;\n }\n }\n }\n // font\n this.modifiedEmSizeStack = false;\n if (typeof ctx.font !== 'undefined') {\n const fontStyleProp = this.getStyle('font');\n const fontStyleStyleProp = this.getStyle('font-style');\n const fontVariantStyleProp = this.getStyle('font-variant');\n const fontWeightStyleProp = this.getStyle('font-weight');\n const fontSizeStyleProp = this.getStyle('font-size');\n const fontFamilyStyleProp = this.getStyle('font-family');\n const 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 if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx);\n // opacity\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n clearContext(ctx) {\n super.clearContext(ctx);\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n constructor(...args){\n super(...args);\n this.modifiedEmSizeStack = false;\n }\n}\n\nclass TextElement extends RenderedElement {\n setContext(ctx) {\n let fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n const textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n initializeCoordinates() {\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n }\n getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n // first, calculate child positions\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n let boundingBox = null;\n // then calculate bounding box\n this.children.forEach((_, i)=>{\n const childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n getFontSize() {\n const { document , parent } = this;\n const inheritFontSize = Font.parse(document.ctx.font).fontSize;\n const fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n getTElementBoundingBox(ctx) {\n const fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n getGlyph(font, text, i) {\n const char = text[i];\n let glyph;\n if (font.isArabic) {\n var ref;\n const len = text.length;\n const prevChar = text[i - 1];\n const nextChar = text[i + 1];\n let arabicForm = 'isolated';\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n glyph = ((ref = font.arabicGlyphs[char]) === null || ref === void 0 ? void 0 : ref[arabicForm]) || font.glyphs[char];\n } else {\n glyph = font.glyphs[char];\n }\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n return glyph;\n }\n getText() {\n return '';\n }\n getTextFromNode(node) {\n const textNode = node || this.node;\n const childNodes = Array.from(textNode.parentNode.childNodes);\n const index = childNodes.indexOf(textNode);\n const lastIndex = childNodes.length - 1;\n let text = compressSpaces(// textNode.value\n // || textNode.text\n textNode.textContent || '');\n if (index === 0) {\n text = trimLeft(text);\n }\n if (index === lastIndex) {\n text = trimRight(text);\n }\n return text;\n }\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n // first, calculate child positions\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n // then render\n this.children.forEach((_, i)=>{\n this.renderChild(ctx, this, this, i);\n });\n const { mouse } = this.document.screen;\n // Do not calc bounding box if mouse is not working.\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n renderTElementChildren(ctx) {\n const { document , parent } = this;\n const renderText = this.getText();\n const customFont = parent.getStyle('font-family').getDefinition();\n if (customFont) {\n const { unitsPerEm } = customFont.fontFace;\n const ctxFont = Font.parse(document.ctx.font);\n const fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n const fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n const scale = fontSize / unitsPerEm;\n const text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;\n const dx = toNumbers(parent.getAttribute('dx').getString());\n const len = text.length;\n for(let i = 0; i < len; i++){\n const glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n const lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, 0.4, 1, 0, 0);\n }\n glyph.render(ctx);\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -0.4, 1, 0, 0);\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 if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n return;\n }\n const { x , y } = this;\n // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // if (ctx.strokeStyle) {\n // ctx.strokeText(renderText, x, y);\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 if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n // }\n }\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\n }\n // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n const firstElement = this.leafTexts[this.textChunkStart];\n const textAnchor = firstElement.getStyle('text-anchor').getString('start');\n const isRTL = false // we treat RTL like LTR\n ;\n let shift = 0;\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX;\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX;\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2;\n }\n for(let i = this.textChunkStart; i < this.leafTexts.length; i++){\n this.leafTexts[i].x += shift;\n }\n // start new chunk\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.textChunkStart = this.leafTexts.length;\n }\n adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i)=>{\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i1) {\n const child = parent.children[i1];\n if (child.children.length > 0) {\n child.children.forEach((_, i)=>{\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);\n });\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i1);\n }\n }\n adjustChildCoordinates(ctx, textParent, parent, i) {\n const child = parent.children[i];\n if (typeof child.measureText !== 'function') {\n return child;\n }\n ctx.save();\n child.setContext(ctx, true);\n const xAttr = child.getAttribute('x');\n const yAttr = child.getAttribute('y');\n const dxAttr = child.getAttribute('dx');\n const dyAttr = child.getAttribute('dy');\n const customFont = child.getStyle('font-family').getDefinition();\n const isRTL = Boolean(customFont === null || customFont === void 0 ? void 0 : customFont.isRTL);\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'));\n }\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n const width = child.measureText(ctx);\n if (isRTL) {\n textParent.x -= width;\n }\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n child.x = textParent.x;\n }\n textParent.x = child.x;\n if (!isRTL) {\n textParent.x += width;\n }\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\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 child.y = textParent.y;\n }\n textParent.y = child.y;\n // update the current chunk and it's bounds\n textParent.leafTexts.push(child);\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width);\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n getChildBoundingBox(ctx, textParent, parent, i2) {\n const child = parent.children[i2];\n // not a text node?\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n const boundingBox = child.getBoundingBox(ctx);\n if (boundingBox) {\n child.children.forEach((_, i)=>{\n const childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n }\n return boundingBox;\n }\n renderChild(ctx, textParent, parent, i3) {\n const child = parent.children[i3];\n child.render(ctx);\n child.children.forEach((_, i)=>{\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n measureText(ctx) {\n const { measureCache } = this;\n if (~measureCache) {\n return measureCache;\n }\n const renderText = this.getText();\n const measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n const { parent } = this;\n const customFont = parent.getStyle('font-family').getDefinition();\n if (customFont) {\n const fontSize = this.getFontSize();\n const text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n const dx = toNumbers(parent.getAttribute('dx').getString());\n const len = text.length;\n let measure = 0;\n for(let i = 0; i < len; i++){\n const glyph = this.getGlyph(customFont, text, i);\n measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n measure += dx[i];\n }\n }\n return measure;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n ctx.save();\n this.setContext(ctx, true);\n const { width: measure } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n /**\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\n * are only inherited from a parent to its first child.\n * @param name - The attribute name.\n * @returns The attribute value or null.\n */ getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let current = this;\n while(current instanceof TextElement && current.isFirstChild() && current.parent){\n const parentAttr = current.parent.getAttribute(name);\n if (parentAttr.hasValue(true)) {\n return parentAttr.getString('0');\n }\n current = current.parent;\n }\n return null;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\n this.x = 0;\n this.y = 0;\n this.leafTexts = [];\n this.textChunkStart = 0;\n this.minX = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.measureCache = -1;\n }\n}\n\nclass TSpanElement extends TextElement {\n getText() {\n return this.text;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan';\n // if this node has children, then they own the text\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n}\n\nclass TextNode extends TSpanElement {\n constructor(...args){\n super(...args);\n this.type = 'textNode';\n }\n}\n\nclass PathParser extends SVGPathData {\n reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n isEnd() {\n const { i , commands } = this;\n return i >= commands.length - 1;\n }\n next() {\n const command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n getPoint() {\n let xProp = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 'x', yProp = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'y';\n const point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n getAsControlPoint(xProp, yProp) {\n const point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n getAsCurrentPoint(xProp, yProp) {\n const point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n getReflectedControlPoint() {\n const previousCommand = this.previousCommand.type;\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n }\n // reflect point\n const { current: { x: cx , y: cy } , control: { x: ox , y: oy } } = this;\n const point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n makeAbsolute(point) {\n if (this.command.relative) {\n const { x , y } = this.current;\n point.x += x;\n point.y += y;\n }\n return point;\n }\n addMarker(point, from, priorTo) {\n const { points , angles } = this;\n // if the last angle isn't filled in because we didn't have this point yet ...\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n getMarkerPoints() {\n return this.points;\n }\n getMarkerAngles() {\n const { angles } = this;\n const len = angles.length;\n for(let i = 0; i < len; i++){\n if (!angles[i]) {\n for(let j = i + 1; j < len; j++){\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n return angles;\n }\n constructor(path){\n super(path// Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1')// Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = new Point(0, 0);\n this.start = new Point(0, 0);\n this.current = new Point(0, 0);\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n}\n\nclass PathElement extends RenderedElement {\n path(ctx) {\n const { pathParser } = this;\n const boundingBox = new BoundingBox();\n pathParser.reset();\n if (ctx) {\n ctx.beginPath();\n }\n while(!pathParser.isEnd()){\n switch(pathParser.next().type){\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n return boundingBox;\n }\n getBoundingBox(_ctx) {\n return this.path();\n }\n getMarkers() {\n const { pathParser } = this;\n const points = pathParser.getMarkerPoints();\n const angles = pathParser.getMarkerAngles();\n const markers = points.map((point, i)=>[\n point,\n angles[i]\n ]\n );\n return markers;\n }\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n const fillRuleStyleProp = this.getStyle('fill-rule');\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\n }\n }\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n }\n const markers = this.getMarkers();\n if (markers) {\n const markersLastIndex = markers.length - 1;\n const markerStartStyleProp = this.getStyle('marker-start');\n const markerMidStyleProp = this.getStyle('marker-mid');\n const markerEndStyleProp = this.getStyle('marker-end');\n if (markerStartStyleProp.isUrlDefinition()) {\n const marker = markerStartStyleProp.getDefinition();\n const [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n if (markerMidStyleProp.isUrlDefinition()) {\n const marker = markerMidStyleProp.getDefinition();\n for(let i = 1; i < markersLastIndex; i++){\n const [point, angle] = markers[i];\n marker.render(ctx, point, angle);\n }\n }\n if (markerEndStyleProp.isUrlDefinition()) {\n const marker = markerEndStyleProp.getDefinition();\n const [point, angle] = markers[markersLastIndex];\n marker.render(ctx, point, angle);\n }\n }\n }\n static pathM(pathParser) {\n const point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n pathM(ctx, boundingBox) {\n const { pathParser } = this;\n const { point } = PathElement.pathM(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n static pathL(pathParser) {\n const { current } = pathParser;\n const point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n pathL(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathL(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathH(pathParser) {\n const { current , command } = pathParser;\n const point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n pathH(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathH(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathV(pathParser) {\n const { current , command } = pathParser;\n const point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n pathV(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathV(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathC(pathParser) {\n const { current } = pathParser;\n const point = pathParser.getPoint('x1', 'y1');\n const controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n pathC(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point , controlPoint , currentPoint } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathS(pathParser) {\n const { current } = pathParser;\n const point = pathParser.getReflectedControlPoint();\n const controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n pathS(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point , controlPoint , currentPoint } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathQ(pathParser) {\n const { current } = pathParser;\n const controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n pathQ(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , controlPoint , currentPoint } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathT(pathParser) {\n const { current } = pathParser;\n const controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n pathT(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , controlPoint , currentPoint } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathA(pathParser) {\n const { current , command } = pathParser;\n let { rX , rY , xRot , lArcFlag , sweepFlag } = command;\n const xAxisRotation = xRot * (Math.PI / 180);\n const currentPoint = pathParser.getAsCurrentPoint();\n // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n const currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2);\n // adjust radii\n const l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n }\n // cx', cy'\n let s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n if (isNaN(s)) {\n s = 0;\n }\n const cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX);\n // cx, cy\n const centp = new Point((current.x + currentPoint.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y);\n // initial angle\n const a1 = vectorsAngle([\n 1,\n 0\n ], [\n (currp.x - cpp.x) / rX,\n (currp.y - cpp.y) / rY\n ]) // θ1\n ;\n // angle delta\n const u = [\n (currp.x - cpp.x) / rX,\n (currp.y - cpp.y) / rY\n ];\n const v = [\n (-currp.x - cpp.x) / rX,\n (-currp.y - cpp.y) / rY\n ];\n let ad = vectorsAngle(u, v) // Δθ\n ;\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n pathA(ctx, boundingBox) {\n const { pathParser } = this;\n const { currentPoint , rX , rY , sweepFlag , xAxisRotation , centp , a1 , ad } = PathElement.pathA(pathParser);\n // for markers\n const dir = 1 - sweepFlag ? 1 : -1;\n const ah = a1 + dir * (ad / 2);\n const 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 const r = rX > rY ? rX : rY;\n const sx = rX > rY ? 1 : rX / rY;\n const 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 static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\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 constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n}\n\nclass SVGElement extends RenderedElement {\n setContext(ctx) {\n var ref;\n const { document } = this;\n const { screen , window } = document;\n const canvas = ctx.canvas;\n screen.setDefaults(ctx);\n if ('style' in canvas && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n const fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n }\n // create new view port\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n let { width , height } = screen.viewPort;\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n const refXAttr = this.getAttribute('refX');\n const refYAttr = this.getAttribute('refY');\n const viewBoxAttr = this.getAttribute('viewBox');\n const viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n const clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n let minX = 0;\n let minY = 0;\n let clipX = 0;\n let clipY = 0;\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n screen.viewPort.setCurrent(width, height);\n // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n if (this.node // is not temporary SVGElement\n && (!this.parent || ((ref = this.node.parentNode) === null || ref === void 0 ? void 0 : ref.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */ resize(width) {\n let height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width, preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n const widthAttr = this.getAttribute('width', true);\n const heightAttr = this.getAttribute('height', true);\n const viewBoxAttr = this.getAttribute('viewBox');\n const styleAttr = this.getAttribute('style');\n const originWidth = widthAttr.getNumber(0);\n const originHeight = heightAttr.getNumber(0);\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n const preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n if (styleAttr.hasValue()) {\n const widthStyle = this.getStyle('width');\n const heightStyle = this.getStyle('height');\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n constructor(...args){\n super(...args);\n this.type = 'svg';\n this.root = false;\n }\n}\n\nclass RectElement extends PathElement {\n path(ctx) {\n const x = this.getAttribute('x').getPixels('x');\n const y = this.getAttribute('y').getPixels('y');\n const width = this.getStyle('width', false, true).getPixels('x');\n const height = this.getStyle('height', false, true).getPixels('y');\n const rxAttr = this.getAttribute('rx');\n const ryAttr = this.getAttribute('ry');\n let rx = rxAttr.getPixels('x');\n let ry = ryAttr.getPixels('y');\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n rx = Math.min(rx, width / 2);\n ry = Math.min(ry, height / 2);\n if (ctx) {\n const 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 return new BoundingBox(x, y, x + width, y + height);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'rect';\n }\n}\n\nclass CircleElement extends PathElement {\n path(ctx) {\n const cx = this.getAttribute('cx').getPixels('x');\n const cy = this.getAttribute('cy').getPixels('y');\n const r = this.getAttribute('r').getPixels();\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'circle';\n }\n}\n\nclass EllipseElement extends PathElement {\n path(ctx) {\n const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n const rx = this.getAttribute('rx').getPixels('x');\n const ry = this.getAttribute('ry').getPixels('y');\n const cx = this.getAttribute('cx').getPixels('x');\n const cy = this.getAttribute('cy').getPixels('y');\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 return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'ellipse';\n }\n}\n\nclass LineElement extends PathElement {\n getPoints() {\n return [\n new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')),\n new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))\n ];\n }\n path(ctx) {\n const [{ x: x0 , y: y0 }, { x: x1 , y: y1 }] = this.getPoints();\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n return new BoundingBox(x0, y0, x1, y1);\n }\n getMarkers() {\n const [p0, p1] = this.getPoints();\n const a = p0.angleTo(p1);\n return [\n [\n p0,\n a\n ],\n [\n p1,\n a\n ]\n ];\n }\n constructor(...args){\n super(...args);\n this.type = 'line';\n }\n}\n\nclass PolylineElement extends PathElement {\n path(ctx) {\n const { points } = this;\n const [{ x: x0 , y: y0 }] = points;\n const boundingBox = new BoundingBox(x0, y0);\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n points.forEach((param)=>{\n let { x , y } = param;\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n getMarkers() {\n const { points } = this;\n const lastIndex = points.length - 1;\n const markers = [];\n points.forEach((point, i)=>{\n if (i === lastIndex) {\n return;\n }\n markers.push([\n point,\n point.angleTo(points[i + 1])\n ]);\n });\n if (markers.length > 0) {\n markers.push([\n points[points.length - 1],\n markers[markers.length - 1][1]\n ]);\n }\n return markers;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n}\n\nclass PolygonElement extends PolylineElement {\n path(ctx) {\n const boundingBox = super.path(ctx);\n const [{ x , y }] = this.points;\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n return boundingBox;\n }\n constructor(...args){\n super(...args);\n this.type = 'polygon';\n }\n}\n\nclass PatternElement extends Element {\n createPattern(ctx, _, parentOpacityProp) {\n const width = this.getStyle('width').getPixels('x', true);\n const height = this.getStyle('height').getPixels('y', true);\n // render me using a temporary svg element\n const 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 const patternCanvas = this.document.createCanvas(width, height);\n const patternCtx = patternCanvas.getContext('2d');\n const xAttr = this.getAttribute('x');\n const yAttr = this.getAttribute('y');\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity');\n }\n // render 3x3 grid so when we transform there's no white space on edges\n for(let x = -1; x <= 1; x++){\n for(let 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 const pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n constructor(...args){\n super(...args);\n this.type = 'pattern';\n }\n}\n\nclass MarkerElement extends Element {\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n const { x , y } = point;\n const orient = this.getAttribute('orient').getString('auto');\n const markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n ctx.save();\n // render me using a temporary svg element\n const markerSvg = new SVGElement(this.document);\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 if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n ctx.translate(-x, -y);\n }\n constructor(...args){\n super(...args);\n this.type = 'marker';\n }\n}\n\nclass DefsElement extends Element {\n render() {\n // NOOP\n }\n constructor(...args){\n super(...args);\n this.type = 'defs';\n }\n}\n\nclass GElement extends RenderedElement {\n getBoundingBox(ctx) {\n const boundingBox = new BoundingBox();\n this.children.forEach((child)=>{\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n constructor(...args){\n super(...args);\n this.type = 'g';\n }\n}\n\nclass GradientElement extends Element {\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let stopsContainer = this;\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n const { stops } = stopsContainer;\n const gradient = this.getGradient(ctx, element);\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n stops.forEach((stop)=>{\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\n });\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n const { document } = this;\n const { MAX_VIRTUAL_PIXELS } = Screen;\n const { viewPort } = document.screen;\n const rootView = viewPort.getRoot();\n const rect = new RectElement(document);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n const group = new GElement(document);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [\n rect\n ];\n const patternSvg = new SVGElement(document);\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 = [\n group\n ];\n const patternCanvas = document.createCanvas(rootView.width, rootView.height);\n const patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n return gradient;\n }\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach((attributeToInherit)=>{\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n const colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n return color;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.attributesToInherit = [\n 'gradientUnits'\n ];\n this.stops = [];\n const { stops , children } = this;\n children.forEach((child)=>{\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n}\n\nclass LinearGradientElement extends GradientElement {\n getGradient(ctx, element) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n const boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\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 const x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n const y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n const x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n const y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n}\n\nclass RadialGradientElement extends GradientElement {\n getGradient(ctx, element) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n const boundingBox = element.getBoundingBox(ctx);\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n const cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n const cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n let fx = cx;\n let fy = cy;\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\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 const r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n const fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'stop';\n const offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));\n const stopOpacity = this.getStyle('stop-opacity');\n let stopColor = this.getStyle('stop-color', true);\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n}\n\nclass AnimateElement extends Element {\n getProperty() {\n const attributeType = this.getAttribute('attributeType').getString();\n const attributeName = this.getAttribute('attributeName').getString();\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n return this.parent.getAttribute(attributeName, true);\n }\n calcValue() {\n const { initialUnits } = this;\n const { progress , from , to } = this.getProgress();\n // tween value linearly\n let newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n if (initialUnits === '%') {\n newValue *= 100 // numValue() returns 0-1 whereas properties are 0-100\n ;\n }\n return \"\".concat(newValue).concat(initialUnits);\n }\n update(delta) {\n const { parent } = this;\n const prop = this.getProperty();\n // set initial value\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n }\n // if we're past the end time\n if (this.duration > this.maxDuration) {\n const fill = this.getAttribute('fill').getString('remove');\n // loop for indefinitely repeating animations\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 if (parent && prop) {\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n }\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n if (parent && prop) {\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n }\n return true;\n }\n return false;\n }\n this.duration += delta;\n // if we're past the begin time\n let updated = false;\n if (this.begin < this.duration) {\n let newValue = this.calcValue() // tween\n ;\n const typeAttr = this.getAttribute('type');\n if (typeAttr.hasValue()) {\n // for transform, etc.\n const type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n prop.setValue(newValue);\n updated = true;\n }\n return updated;\n }\n getProgress() {\n const { document , values } = this;\n let progress = (this.duration - this.begin) / (this.maxDuration - this.begin);\n let from;\n let to;\n if (values.hasValue()) {\n const p = progress * (values.getValue().length - 1);\n const lb = Math.floor(p);\n const ub = Math.ceil(p);\n let value;\n value = values.getValue()[lb];\n from = new Property(document, 'from', value ? parseFloat(value) : 0);\n value = values.getValue()[ub];\n to = new Property(document, 'to', value ? parseFloat(value) : 0);\n progress = (p - lb) / (ub - lb);\n } else {\n from = this.from;\n to = this.to;\n }\n return {\n progress,\n from,\n to\n };\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\n this.begin = this.getAttribute('begin').getMilliseconds();\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();\n this.from = this.getAttribute('from');\n this.to = this.getAttribute('to');\n this.values = new Property(document, 'values', null);\n const valuesAttr = this.getAttribute('values');\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n}\n\nclass AnimateColorElement extends AnimateElement {\n calcValue() {\n const { progress , from , to } = this.getProgress();\n const colorFrom = new RGBColor(from.getColor());\n const colorTo = new RGBColor(to.getColor());\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n const r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n const g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n const b = colorFrom.b + (colorTo.b - colorFrom.b) * progress;\n // ? alpha\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n return this.getAttribute('from').getColor();\n }\n constructor(...args){\n super(...args);\n this.type = 'animateColor';\n }\n}\n\nclass AnimateTransformElement extends AnimateElement {\n calcValue() {\n const { progress , from: from1 , to: to1 } = this.getProgress();\n // tween value linearly\n const transformFrom = toNumbers(from1.getString());\n const transformTo = toNumbers(to1.getString());\n const newValue = transformFrom.map((from, i)=>{\n const to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n constructor(...args){\n super(...args);\n this.type = 'animateTransform';\n }\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'font-face';\n this.ascent = this.getAttribute('ascent').getNumber();\n this.descent = this.getAttribute('descent').getNumber();\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber();\n }\n}\n\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n}\n\nclass MissingGlyphElement extends GlyphElement {\n constructor(...args){\n super(...args);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n}\n\nclass FontElement extends Element {\n render() {\n // NO RENDER\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.isArabic = false;\n this.glyphs = {};\n this.arabicGlyphs = {};\n this.isRTL = false;\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n const { definitions } = document;\n const { children } = this;\n for (const child of children){\n if (child instanceof FontFaceElement) {\n this.fontFace = child;\n const fontFamilyStyle = child.getStyle('font-family');\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this;\n }\n } else if (child instanceof MissingGlyphElement) {\n this.missingGlyph = child;\n } else if (child instanceof GlyphElement) {\n if (child.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n const arabicGlyph = this.arabicGlyphs[child.unicode];\n if (typeof arabicGlyph === 'undefined') {\n this.arabicGlyphs[child.unicode] = {\n [child.arabicForm]: child\n };\n } else {\n arabicGlyph[child.arabicForm] = child;\n }\n } else {\n this.glyphs[child.unicode] = child;\n }\n }\n }\n }\n}\n\nclass TRefElement extends TextElement {\n getText() {\n const element = this.getHrefAttribute().getDefinition();\n if (element) {\n const firstChild = element.children[0];\n if (firstChild) {\n return firstChild.getText();\n }\n }\n return '';\n }\n constructor(...args){\n super(...args);\n this.type = 'tref';\n }\n}\n\nclass AElement extends TextElement {\n getText() {\n return this.text;\n }\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n const { document , x , y } = this;\n const { mouse } = document.screen;\n const fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize);\n // Do not calc bounding box if mouse is not working.\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 const g = new GElement(this.document);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n onClick() {\n const { window } = this.document;\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n onMouseMove() {\n const ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n constructor(document, node1, captureTextNodes){\n super(document, node1, captureTextNodes);\n this.type = 'a';\n const { childNodes } = node1;\n const firstChild = childNodes[0];\n const hasText = childNodes.length > 0 && Array.from(childNodes).every((node)=>node.nodeType === 3\n );\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n}\n\nclass TextPathElement extends TextElement {\n getText() {\n return this.text;\n }\n path(ctx) {\n const { dataArray } = this;\n if (ctx) {\n ctx.beginPath();\n }\n dataArray.forEach((param)=>{\n let { type , points } = param;\n switch(type){\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n break;\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n break;\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n break;\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n break;\n case PathParser.ARC:\n {\n const [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\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 break;\n }\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n break;\n }\n });\n }\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n const textDecoration = this.parent.getStyle('text-decoration').getString();\n const fontSize = this.getFontSize();\n const { glyphInfo } = this;\n const fill = ctx.fillStyle;\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n glyphInfo.forEach((glyph, i)=>{\n const { p0 , p1 , rotation , text: partialText } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n ctx.restore();\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n }\n // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // ctx.strokeStyle = 'red';\n // else\n // ctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n });\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n getLetterSpacingAt() {\n let idx = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n let offset = inputOffset;\n let glyphWidth = this.measureText(ctx, c);\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n const splineStep = this.textHeight / 20;\n const p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n const p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n const segment = {\n p0,\n p1\n };\n const rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n if (dy) {\n const dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n const dyY = Math.cos(-rotation) * dy;\n segment.p0 = {\n ...p0,\n x: p0.x + dyX,\n y: p0.y + dyY\n };\n segment.p1 = {\n ...p1,\n x: p1.x + dyX,\n y: p1.y + dyY\n };\n }\n offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n measureText(ctx, text) {\n const { measuresCache } = this;\n const targetText = text || this.getText();\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n const measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n }\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 setTextData(ctx) {\n if (this.glyphInfo) {\n return;\n }\n const renderText = this.getText();\n const chars = renderText.split('');\n const spacesNumber = renderText.split(' ').length - 1;\n const dx = this.parent.getAttribute('dx').split().map((_)=>_.getPixels('x')\n );\n const dy = this.parent.getAttribute('dy').getPixels('y');\n const anchor = this.parent.getStyle('text-anchor').getString('start');\n const thisSpacing = this.getStyle('letter-spacing');\n const parentSpacing = this.parent.getStyle('letter-spacing');\n let letterSpacing = 0;\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 }\n // fill letter-spacing cache\n const letterSpacingCache = [];\n const textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n for(let i1 = 0; i1 < textLen; i1++){\n letterSpacingCache.push(typeof dx[i1] !== 'undefined' ? dx[i1] : letterSpacing);\n }\n const dxSum = letterSpacingCache.reduce((acc, cur, i)=>i === 0 ? 0 : acc + cur || 0\n , 0);\n const textWidth = this.measureText(ctx);\n const textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n const fullPathWidth = this.getPathLength();\n const startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n let offset = 0;\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n offset += startOffset;\n chars.forEach((char, i)=>{\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n const { offset: nextOffset , segment , rotation } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n if (!segment.p0 || !segment.p1) {\n return;\n }\n // const width = this.getLineLength(\n // segment.p0.x,\n // segment.p0.y,\n // segment.p1.x,\n // segment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // kern + width / 2.0,\n // segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n });\n });\n }\n parsePathData(path) {\n this.pathLength = -1 // reset path length\n ;\n if (!path) {\n return [];\n }\n const pathCommands = [];\n const { pathParser } = path;\n pathParser.reset();\n // convert l, H, h, V, and v to L\n while(!pathParser.isEnd()){\n const { current } = pathParser;\n const startX = current ? current.x : 0;\n const startY = current ? current.y : 0;\n const command = pathParser.next();\n let nextCommandType = command.type;\n let points = [];\n switch(command.type){\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n return pathCommands;\n }\n pathM(pathParser, points) {\n const { x , y } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n pathL(pathParser, points) {\n const { x , y } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathH(pathParser, points) {\n const { x , y } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathV(pathParser, points) {\n const { x , y } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathC(pathParser, points) {\n const { point , controlPoint , currentPoint } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n pathS(pathParser, points) {\n const { point , controlPoint , currentPoint } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n pathQ(pathParser, points) {\n const { controlPoint , currentPoint } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n pathT(pathParser, points) {\n const { controlPoint , currentPoint } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n pathA(pathParser) {\n let { rX , rY , sweepFlag , xAxisRotation , centp , a1 , ad } = PathElement.pathA(pathParser);\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n return [\n centp.x,\n centp.y,\n rX,\n rY,\n a1,\n ad,\n xAxisRotation,\n sweepFlag\n ];\n }\n calcLength(x, y, commandType, points) {\n let len = 0;\n let p1 = null;\n let p2 = null;\n let t = 0;\n switch(commandType){\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\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 return len;\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\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 return len;\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0;\n const start = points[4];\n // 4 = theta\n const dTheta = points[5];\n // 5 = dTheta\n const end = points[4] + dTheta;\n let inc = Math.PI / 180;\n // 1 degree resolution\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\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 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 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 getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n let fromX = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : p1x, fromY = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : p1y;\n const m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n let run = Math.sqrt(dist * dist / (1 + m * m));\n if (p2x < p1x) {\n run *= -1;\n }\n let rise = m * run;\n let pt = null;\n if (p2x === p1x) {\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 let ix = 0;\n let iy = 0;\n const len = this.getLineLength(p1x, p1y, p2x, p2y);\n if (len < PSEUDO_ZERO) {\n return null;\n }\n let u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n if (p2x < p1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n return pt;\n }\n getPointOnPath(distance) {\n const fullLen = this.getPathLength();\n let cumulativePathLength = 0;\n let p = null;\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n const { dataArray } = this;\n for (const command of dataArray){\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n const delta = distance - cumulativePathLength;\n let currentT = 0;\n switch(command.type){\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n case PathParser.ARC:\n {\n const start = command.points[4];\n // 4 = theta\n const dTheta = command.points[5];\n // 5 = dTheta\n const end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n if (currentT > 1) {\n currentT = 1;\n }\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n if (currentT > 1) {\n currentT = 1;\n }\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n if (p) {\n return p;\n }\n break;\n }\n return null;\n }\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command)=>command.pathLength > 0 ? length + command.pathLength : length\n , 0);\n }\n return this.pathLength;\n }\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n const x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);\n const y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);\n return {\n x,\n y\n };\n }\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\n const x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);\n const y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);\n return {\n x,\n y\n };\n }\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi);\n const sinPsi = Math.sin(psi);\n const 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 }\n // TODO need some optimisations. possibly build cache only for curved segments?\n buildEquidistantCache(inputStep, inputPrecision) {\n const fullLen = this.getPathLength();\n const precision = inputPrecision || 0.25 // accuracy vs performance\n ;\n const step = inputStep || fullLen / 100;\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n };\n // Calculate points\n let s = 0;\n for(let l = 0; l <= fullLen; l += precision){\n const p0 = this.getPointOnPath(l);\n const p1 = this.getPointOnPath(l + precision);\n if (!p0 || !p1) {\n continue;\n }\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\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 getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n const idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([\n [\n '',\n 0\n ]\n ]);\n const pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n}\n\n// groups: 1: mime-type (+ charset), 2: mime-type (w/o charset), 3: charset, 4: base64?, 5: body\nconst dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;\nclass ImageElement extends RenderedElement {\n async loadImage(href) {\n try {\n const image = await this.document.createImage(href);\n this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n this.loaded = true;\n }\n async loadSvg(href) {\n const match = dataUriRegex.exec(href);\n if (match) {\n const data = match[5];\n if (data) {\n if (match[4] === 'base64') {\n this.image = atob(data);\n } else {\n this.image = decodeURIComponent(data);\n }\n }\n } else {\n try {\n const response = await this.document.fetch(href);\n const svg = await response.text();\n this.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n this.loaded = true;\n }\n renderChildren(ctx) {\n const { document , image , loaded } = this;\n const x = this.getAttribute('x').getPixels('x');\n const y = this.getAttribute('y').getPixels('y');\n const width = this.getStyle('width').getPixels('x');\n const height = this.getStyle('height').getPixels('y');\n if (!loaded || !image || !width || !height) {\n return;\n }\n ctx.save();\n ctx.translate(x, y);\n if (typeof image === 'string') {\n const subDocument = document.canvg.forkString(ctx, image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n });\n const { documentElement } = subDocument.document;\n if (documentElement) {\n documentElement.parent = this;\n }\n void subDocument.render();\n } else {\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: image.width,\n height,\n desiredHeight: image.height\n });\n if (this.loaded) {\n if (!('complete' in image) || image.complete) {\n ctx.drawImage(image, 0, 0);\n }\n }\n }\n ctx.restore();\n }\n getBoundingBox() {\n const x = this.getAttribute('x').getPixels('x');\n const y = this.getAttribute('y').getPixels('y');\n const width = this.getStyle('width').getPixels('x');\n const height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n const href = this.getHrefAttribute().getString();\n if (!href) {\n return;\n }\n const isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n }\n}\n\nclass SymbolElement extends RenderedElement {\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'symbol';\n }\n}\n\nclass SVGFontLoader {\n async load(fontFamily, url) {\n try {\n const { document } = this;\n const svgDocument = await document.canvg.parser.load(url);\n const fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach((fontNode)=>{\n const font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n this.loaded = true;\n }\n constructor(document){\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'style';\n const css = compressSpaces(Array.from(node.childNodes)// NEED TEST\n .map((_)=>_.textContent\n ).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n const cssDefs = css.split('}');\n cssDefs.forEach((_1)=>{\n const def = _1.trim();\n if (!def) {\n return;\n }\n const cssParts = def.split('{');\n const cssClasses = cssParts[0].split(',');\n const cssProps = cssParts[1].split(';');\n cssClasses.forEach((_)=>{\n const cssClass = _.trim();\n if (!cssClass) {\n return;\n }\n const props = document.styles[cssClass] || {};\n cssProps.forEach((cssProp)=>{\n const prop = cssProp.indexOf(':');\n const name = cssProp.substr(0, prop).trim();\n const value = cssProp.substr(prop + 1, cssProp.length - prop).trim();\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 if (cssClass === '@font-face') {\n const fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n const srcs = props.src.getString().split(',');\n srcs.forEach((src)=>{\n if (src.indexOf('format(\"svg\")') > 0) {\n const url = parseExternalUrl(src);\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n setContext(ctx) {\n super.setContext(ctx);\n const xAttr = this.getAttribute('x');\n const yAttr = this.getAttribute('y');\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n path(ctx) {\n const { element } = this;\n if (element) {\n element.path(ctx);\n }\n }\n renderChildren(ctx) {\n const { document , element } = this;\n if (element) {\n let tempSvg = element;\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);\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 // element is still the parent of the children\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n if (tempSvg.type === 'svg') {\n const widthStyle = this.getStyle('width', false, true);\n const heightStyle = this.getStyle('height', false, true);\n // if symbol or svg, inherit width/height from me\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n const oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n getBoundingBox(ctx) {\n const { element } = this;\n if (element) {\n return element.getBoundingBox(ctx);\n }\n return null;\n }\n elementTransform() {\n const { document , element } = this;\n if (!element) {\n return null;\n }\n return Transform.fromElement(document, element);\n }\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n return this.cachedElement;\n }\n constructor(...args){\n super(...args);\n this.type = 'use';\n }\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\nfunction m(matrix, i, v) {\n const mi = matrix[i];\n return mi * v;\n}\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\nclass FeColorMatrixElement extends Element {\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n const { includeOpacity , matrix } = this;\n const srcData = ctx.getImageData(0, 0, width, height);\n for(let y = 0; y < height; y++){\n for(let x = 0; x < width; x++){\n const r = imGet(srcData.data, x, y, width, height, 0);\n const g = imGet(srcData.data, x, y, width, height, 1);\n const b = imGet(srcData.data, x, y, width, height, 2);\n const a = imGet(srcData.data, x, y, width, height, 3);\n let nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n let ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n let nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n let na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\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 ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n let matrix = toNumbers(this.getAttribute('values').getString());\n switch(this.getAttribute('type').getString('matrix')){\n case 'saturate':\n {\n const s = matrix[0];\n /* eslint-disable array-element-newline */ matrix = [\n 0.213 + 0.787 * s,\n 0.715 - 0.715 * s,\n 0.072 - 0.072 * s,\n 0,\n 0,\n 0.213 - 0.213 * s,\n 0.715 + 0.285 * s,\n 0.072 - 0.072 * s,\n 0,\n 0,\n 0.213 - 0.213 * s,\n 0.715 - 0.715 * s,\n 0.072 + 0.928 * s,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n case 'hueRotate':\n {\n const a = matrix[0] * Math.PI / 180;\n /* eslint-disable array-element-newline */ matrix = [\n c(a, 0.213, 0.787, -0.213),\n c(a, 0.715, -0.715, -0.715),\n c(a, 0.072, -0.072, 0.928),\n 0,\n 0,\n c(a, 0.213, -0.213, 0.143),\n c(a, 0.715, 0.285, 0.14),\n c(a, 0.072, -0.072, -0.283),\n 0,\n 0,\n c(a, 0.213, -0.213, -0.787),\n c(a, 0.715, -0.715, 0.715),\n c(a, 0.072, 0.928, 0.072),\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */ matrix = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0.2125,\n 0.7154,\n 0.0721,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n}\n\nclass MaskElement extends Element {\n apply(ctx, element) {\n const { document } = this;\n // render as temp svg\n let x = this.getAttribute('x').getPixels('x');\n let y = this.getAttribute('y').getPixels('y');\n let width = this.getStyle('width').getPixels('x');\n let height = this.getStyle('height').getPixels('y');\n if (!width && !height) {\n const boundingBox = new BoundingBox();\n this.children.forEach((child)=>{\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n const ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n const maskCanvas = document.createCanvas(x + width, y + height);\n const maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx);\n // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [\n {\n nodeName: 'type',\n value: 'luminanceToAlpha'\n },\n {\n nodeName: 'includeOpacity',\n value: 'true'\n }\n ]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n const tmpCanvas = document.createCanvas(x + width, y + height);\n const 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);\n // reassign mask\n this.restoreStyles(element, ignoredStyles);\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'mask';\n }\n}\nMaskElement.ignoreStyles = [\n 'mask',\n 'transform',\n 'clip-path'\n];\n\nconst noop = ()=>{\n// NOOP\n};\nclass ClipPathElement extends Element {\n apply(ctx) {\n const { document } = this;\n const contextProto = Reflect.getPrototypeOf(ctx);\n const { beginPath , closePath } = ctx;\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach((child)=>{\n if (!('path' in child)) {\n return;\n }\n let transform = 'elementTransform' in child ? child.elementTransform() : null // handle \n ;\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n if (transform) {\n transform.apply(ctx);\n }\n child.path(ctx);\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'clipPath';\n }\n}\n\nclass FilterElement extends Element {\n apply(ctx, element) {\n // render as temp svg\n const { document , children } = this;\n const boundingBox = 'getBoundingBox' in element ? element.getBoundingBox(ctx) : null;\n if (!boundingBox) {\n return;\n }\n let px = 0;\n let py = 0;\n children.forEach((child)=>{\n const efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n const width = Math.floor(boundingBox.width);\n const height = Math.floor(boundingBox.height);\n const tmpCanvasWidth = width + 2 * px;\n const tmpCanvasHeight = height + 2 * py;\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n const x = Math.floor(boundingBox.x);\n const y = Math.floor(boundingBox.y);\n const ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n const tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n const tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx);\n // apply filters\n children.forEach((child)=>{\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n });\n // render on me\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'filter';\n }\n}\nFilterElement.ignoreStyles = [\n 'filter',\n 'transform',\n 'clip-path'\n];\n\nclass FeDropShadowElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n}\n\nclass FeMorphologyElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(...args){\n super(...args);\n this.type = 'feMorphology';\n }\n}\n\nclass FeCompositeElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(...args){\n super(...args);\n this.type = 'feComposite';\n }\n}\n\nclass FeGaussianBlurElement extends Element {\n apply(ctx, x, y, width, height) {\n const { document , blurRadius } = this;\n const body = document.window ? document.window.document.body : null;\n const canvas = ctx.canvas;\n // StackBlur requires canvas be on document\n canvas.id = document.getUniqueId();\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n if (body) {\n body.removeChild(canvas);\n }\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n}\n\nclass TitleElement extends Element {\n constructor(...args){\n super(...args);\n this.type = 'title';\n }\n}\n\nclass DescElement extends Element {\n constructor(...args){\n super(...args);\n this.type = 'desc';\n }\n}\n\nconst elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction createCanvas(width, height) {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\nasync function createImage(src) {\n let anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n const image = document.createElement('img');\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n return new Promise((resolve, reject)=>{\n image.onload = ()=>{\n resolve(image);\n };\n image.onerror = (_event, _source, _lineno, _colno, error)=>{\n reject(error);\n };\n image.src = src;\n });\n}\nconst DEFAULT_EM_SIZE = 12;\nclass Document {\n bindCreateImage(createImage1, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin)=>createImage1(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin)\n ;\n }\n return createImage1;\n }\n get window() {\n return this.screen.window;\n }\n get fetch() {\n return this.screen.fetch;\n }\n get ctx() {\n return this.screen.ctx;\n }\n get emSize() {\n const { emSizeStack } = this;\n return emSizeStack[emSizeStack.length - 1] || DEFAULT_EM_SIZE;\n }\n set emSize(value) {\n const { emSizeStack } = this;\n emSizeStack.push(value);\n }\n popEmSize() {\n const { emSizeStack } = this;\n emSizeStack.pop();\n }\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n isImagesLoaded() {\n return this.images.every((_)=>_.loaded\n );\n }\n isFontsLoaded() {\n return this.fonts.every((_)=>_.loaded\n );\n }\n createDocumentElement(document) {\n const documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n createElement(node) {\n const elementType = node.nodeName.replace(/^[^:]+:/, '');\n const ElementType = Document.elementTypes[elementType];\n if (ElementType) {\n return new ElementType(this, node);\n }\n return new UnknownElement(this, node);\n }\n createTextNode(node) {\n return new TextNode(this, node);\n }\n setViewBox(config) {\n this.screen.setViewBox({\n document: this,\n ...config\n });\n }\n constructor(canvg, { rootEmSize =DEFAULT_EM_SIZE , emSize =DEFAULT_EM_SIZE , createCanvas: createCanvas1 = Document.createCanvas , createImage: createImage2 = Document.createImage , anonymousCrossOrigin } = {}){\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 = createCanvas1;\n this.createImage = this.bindCreateImage(createImage2, anonymousCrossOrigin);\n this.screen.wait(()=>this.isImagesLoaded()\n );\n this.screen.wait(()=>this.isFontsLoaded()\n );\n }\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\n/**\n * SVG renderer on canvas.\n */ class Canvg {\n /**\n * Create Canvg instance 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 * @returns Canvg instance.\n */ static async from(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n const parser = new Parser(options);\n const svgDocument = await parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n /**\n * Create Canvg instance from SVG source string.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n * @returns Canvg instance.\n */ static fromString(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n const parser = new Parser(options);\n const svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\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 * @returns Canvg instance.\n */ fork(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return Canvg.from(ctx, svg, {\n ...this.options,\n ...options\n });\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 * @returns Canvg instance.\n */ forkString(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, {\n ...this.options,\n ...options\n });\n }\n /**\n * Document is ready promise.\n * @returns Ready promise.\n */ ready() {\n return this.screen.ready();\n }\n /**\n * Document is ready value.\n * @returns Is ready or not.\n */ isReady() {\n return this.screen.isReady();\n }\n /**\n * Render only first frame, ignoring animations and mouse.\n * @param options - Rendering options.\n */ async render() {\n let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n this.start({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true,\n ...options\n });\n await this.ready();\n this.stop();\n }\n /**\n * Start rendering.\n * @param options - Render options.\n */ start() {\n let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n const { documentElement , screen , options: baseOptions } = this;\n screen.start(documentElement, {\n enableRedraw: true,\n ...baseOptions,\n ...options\n });\n }\n /**\n * Stop rendering.\n */ 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 */ resize(width) {\n let height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width, preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n /**\n * Main constructor.\n * @param ctx - Rendering context.\n * @param svg - SVG Document.\n * @param options - Rendering options.\n */ constructor(ctx, svg, options = {}){\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n const document = new Document(this, options);\n const documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n}\n\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, elements, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toMatrixValue, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=index.js.map\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAWCAYAAAAvg9c4AAAAAXNSR0IArs4c6QAAAcZJREFUSEvt1D9oE1EcB/Dv9xGiB6l0V9pZl5D7BTNkK1Lo6qKuHUUXHWyztIJghw4dqqKCu5uTf0DoJC73DjKoZNfNxTa0d8nd++kVE5L00jRanDx4y733+7wfv/d+j5VKZd4Yc4PkWZz8+66qL6y1+3khFJHPAC6e3Ouv/NBut5dardbeaGyGOlV97HneahzHK6raSJLkQqlU2u0tjuN4QVVfqepVz/PeR1F0TVWfkvyYB/fQrTAM7/i+v0ZyHcCstfZHDxWRRQDvVHUpDMO32f9qtbrsnHueB+eiJBfTNG33UGPM5V8bbQ2ix8FDqIisAHh4TH0XrLU7g/N5GQ+htVrtXLfbvWKMMaOwqh5Ya98AcKNzo/AQ+gc3oB8yAL8+NTTTReQZgOXTRjcB3P2PHrbpYUf9zen/Pqj8mpbL5fPFYvHIPR23YafTcc1m89tYVERuAng0bcYkbwdBsC0iRzMdeFAaWQdNwkmeAbBB8n4QBOuT0KFXahxer9dnoija/XcogCcAGgDuAVg1xsw55/qP9LhMkyQpFQqFr1kJsqGqD0jeou/7n0hemlS/Kea/ZG06R/K6c86bIjB3qTHmIE3Tlz8Bplh3MvoaRm8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASCAYAAABfJS4tAAAAAXNSR0IArs4c6QAAAuZJREFUOE+d1F9IU1EYAPDvujtmsMmKLKIe7EkIcd17LuRLMhXB1PwTBBH9kSjYpJde/ENm88/UcIo9hL0W5ouz/LNqbUuil1rcs10Ys8bmqMCHzcwxlV0du6cmTDSnzs7jPd/3++4937kfBRmugoKC4wqFoiKRSEwKghDZL43aLyC1z7LsW4ZlKwS3+wdFUfU8z7v3ys0YRgiF3litx9xuN+nu7IzFYrE7GOPR3fCDwEtWm02tUqkgODcHLc3NZH5+fgBj3AIAiX8L/BecRKLRKDxsbydfnE6HKIpXvF7v7634nrBGozlJ0/QlAEAAcNVqs8mTb5xakiTB0+FheDEyEgSAOoyxJ7WXFs7Pz1cplcpHCoXidmlZGX2WYajDajWcKyoCmqZ3HOt7h4P0GI2roijewhiPJQN2wAzDaGQy2aua2trTOr0ecnJyMro4fr8fWpqaSCgU6uR53rAN5jiOoWnabujoOKItKcn4/FOVI5EI3G1sJMFgsHIzmWGYXJlMJvT29Z04X1x8YDSFD5hMMG4239sEWJadutHQcFGn02X06emCpiYnyYDJFBZFEW3ALMuW5uXlOZ6PjFDpmrNfpXg8DkODgzAxMeFNJBL1giD4U/CHjq6u4vLycooQAp8/fYKZmRnydXaWCofDEIvFIPncarOBUqncVmdxcRHut7YSj8czsbKyctPn8y1v3IrCwsJTR3Nzf05bLFTA74fenh4IBAI8ADyTJOmjXC7/7nQ6VxFCv97Z7eqtsNfrTaLSwsKCAWPcDQBk8x7/nQH6C5WVT7RaLTxoa1teX1/Xp5sBCKGlrfBri4WY+vuja2tr11wul2XHL40QGq6qrtbZbbZoPB7X7ja1UnB2djY8HhqCl+Pj3yiKquN53peuBxRCyJKVlVVFCLnM87x5t0axLOvtNhrPmMfGiCAI03K5/LrT6YzuOt04jjNIknTI5XI179V9juNqCCFGABjFGPdtPc90eX8AkDRKrmYfzeIAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAWCAYAAAArdgcFAAAAAXNSR0IArs4c6QAAAZNJREFUSEvNlTFLw0AYht8vCVKRgApdLQo6WLHcXaEi/gGnzvUXiIO6iIOTP0DRSfQ/+AMULBl0MtdFCm6uIggKIgeGnD2xEkLJRVLBbwv3fs/7Xu5LjoQQUwD2tdbTyFFEpADsSCnvbHLinN8Q0bJNmFrfkFKe2HpICBEBcImoBeDd1qC1Vr7vt4MgMH2ZZeBx77UQgHEp5aut4Tfr/xfeaDRmoyi6APCglGp2u9235M4KJWeMzTuOEwAoA7hWSq0mDQrBTcp6vc7iOL4ioom0QWG4MeCcL/XG+RKAnzSwwmu12pzrujM5pmSFiHYBeH2DTHi1Wh0plUovAEZzwNOSQ2tyIcQZES3kgWutFwGMAfggoqYVngdqNEKIYwCb3+BWGIbnQ4EPAhvDwnAhxBGArWTi/m4LwRljZcdxngaBh5V8TWv92Ol02unzKZTcdth/Dn8GMAnAfL72C4BIaa33pJT31uSc8+3eP+GAiByb+GcKiNbDMDy16c0NBMZYBUDF87yv56yK41hJKW8BmBsssz4BMlHZr/tlxB0AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASCAYAAABfJS4tAAAAAXNSR0IArs4c6QAAAtNJREFUOE+llF9IU1Ecx39n1+sWLtdAnPa00DnULbd7z0USCkS9RvhnswdLQp8TJNTl/1nNcvoaJCoIFlRvbg/aXwYJmoE7m+wp3wx6qGAk8w/Ou3njrhw2m1t4Hs/5/T6/7/md7+8gSGOxLKsCAItMJnu7urr6LY0UQKmCOI4zHRwcuMxms9bv978jhNSmypHOTwRjjG/IFYqZIbv9DMYYXeX5ICEk5zRgCmPszM/Pt42Nj6OCwkLY2dkBvro6RAiR2pJyHVNsNBrVmZmZLzmO4x0jIyhb9ZtzKjDG2CCKovtmS0vB7fZ2oCgqruwPWACAFwDgEwRhLhAIfE0mPa4YY3xdLpfP9vX3Z9Xw/LGbRKNR+LSyApubm7C2tiZ6PJ5IeG9vZnt7u2d9fX0rsUAMwLLssCYv775zbAzp9fqU/ZMCQqEQTE1Ogtvl2kAINXm9Xv/RRMSyLK/Vat88mZhA59TqtKBHgxYXF8V7dvvP/f193ufzkcMzCdxhsVof3+3p+W/oYcLy0pLY19v7PRwOlwUCgR8xH5vN5vM0TZMum01jsVhSDkyy6tNTU/B0dnaBEFIXHxCGYQoRQq6GxkZDV3c30DT93+ojkQi0tbaKXzY2ar1e7/u4wtLSUqXkCqPR2PTI6UQ5OX8P2O7urjQggBAChUIBGo0GiktKxMrKSnSpoiK27/F4xOGhoSVCyJXEqyOGYQZyc3MdD0dHZQaDIdHHW4QQdXl5eZYgCFoAuAwAbTqdjusfHISioiJoqKsTg8HghX/2FGN8jabp5102m6q+vj4WIymuqaqSwNmJfZL+FJqmJx84HNkfl5dhfn6+I+ljmUwmHUVRbqvVWnKnsxMEQUgKlgpJv2BGRsaHGp5XvVpYmD7RBXq9/qxSqXx2sayssbm5GQ0ODHwmhBQne1mGYawURc1Fo9HX6dhL8rpk8lsAYCeEuE+yDMuyTgAQfgH2CQl35/FvTAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAmCAYAAABDClKtAAAAAXNSR0IArs4c6QAABJxJREFUWEfFmH9oHEUUx9/bTZNL8o8aRANKseCvP0qtipD7yxREW0iNCG1Aiw1WUwgUjCl3O4ui1p1NLhpsRCS1kAaCaKCJVSsoFQQpoiD6hyItQZFI468IUno5c9n9ehNmy+Wyl9u98+L8cQezO/s+896878wbJt0mJiYSCwsLO4noNiIygv5N+PeJ6GJ7e/s3vb29OWWP1Y+Ucg+Ak0TUvgkQ5UwsMPMhIcRH7LruTgBfAtjyPwKtmmbmfENDw30spTwLYI/u/JqZZ4loZRMBGwA8AuAebfOsgvoTQBszXzFNsz2VSl3eRKBVU9PT041zc3O/AriWmf9gx3GgIS7Ytn3HZgMF9qSUFwCoJKOqoDKZzI2e5x0AsJ2I5k3TPJNKpb6qZUI1QTmO8wARvUNE1xVBqLR2bNt+vlqwqqGklNcT0fcA1P+6Zprm3nQ6/UFcMC1JKsEaY4fPdd2nfd8f15n6OTO/BKALwBHd96EQoisO1NDQ0G7f92cBNAXjYq0pKeXxAMA0zYfS6fTHAFQGKyVWs/zJtu1tUaHCgGJ7Skp5pJC2x9VAwzCmWltb+7PZbLfneZPaU+eEEGrNVWzlgGJDjYyM3LK8vPwdEbWEWTUM4ynLstR2tWErBWLmcwBuJaKtsaHUACllL4ATRNRQbJmZp4UQ+6sBSiQSe3O53Le16tTd+Xy+n5lXdQrArG3bU9UCDQwMLFUtCZWMbvQ8LGTKQwpIRyC6ojuOc4NhGI8C2MrM84ZhzKRSqUtxACsBxYKSUnYXYCaI6JqrGsKcV31NTU1ycHDw50pwUYAiQzmO08PMUwDMMMPq7FMJLipQJKhSIGb+VGUcM98P4MlgO9DaFAoXB6giVAjQTFtbW09fX19eDR4eHr5pZWXFIqJDYXDMfKpwUNwB4LVg61A6VLyowzxfNvsKL79QHDJmnuno6Njf2dm57iRaDq7UoPJyIpHoCrKs3BoMhWJmlZqNwRraCKj4wxXgZpubmx+rBKTDdwrAE8z8RfGGXGzrdDKZ7AnzULmZKjjP8x4HcC8RXWbmM0KI9yplZ/B8bGysKZvN7mppaTkfBhUbKKph9Z7jOM8UMtcmor+Zuc+yrHPrQl50RlfP6gokpXwVwECx5jHzAcuy3l2zjxZBzSeTyW1xQhbVQwAM13VPaDkpHeYz82EhxFtXYetdzYyPj29ZXFxUIrxvo0kUSryjQohXVrWvnlCjo6PNS0tLp4lotxZaALhIRLdrwB+I6M6icL4shHiurlBSyk8ABCfRFcMwDhbO4zuI6KgCMU2z2/f9XcERW8MdqxuUPqX+qD30DxHtE0K87zhOJoBi5odVn5TyRQBBefZX3aC0IJ5UBathGCnLsj7TkrAOSr/bR0SqKpqsK1TYwg7zVJhOXVGFQOFu6BchxM1R07za96JCnSeipI79G4ZhTNd6FQTgd8uy5mrxlNKPNYparRfWqDLzs0KI0dJvRfKUXmTHAIj/8q6TmSeFEAdLoVzXPez7/pu6f7tt26qOXNNW7zxVy2Qyd3me96AuCmu9iP3NNM3XwwoMJai5XK4fwCXbtt8Oi8q/BFs8AIKHZ2UAAAAASUVORK5CYII=\"","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","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;et.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;vc.maxX&&(c.maxX=t),tc.maxY&&(c.maxY=t),tw&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);fw&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return iR&&wR&&wu)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i