{"version":3,"sources":["webpack:///./node_modules/konva/lib/shapes/Arrow.js","webpack:///./node_modules/konva/lib/shapes/Circle.js","webpack:///./node_modules/konva/lib/shapes/Image.js","webpack:///./node_modules/konva/lib/shapes/RegularPolygon.js","webpack:///./node_modules/konva/lib/shapes/TextPath.js","webpack:///./node_modules/konva/lib/shapes/Ellipse.js","webpack:///./node_modules/konva/lib/shapes/Text.js","webpack:///./node_modules/konva/lib/shapes/Rect.js","webpack:///./node_modules/konva/lib/shapes/Arc.js","webpack:///./node_modules/konva/lib/shapes/Path.js","webpack:///./node_modules/konva/lib/shapes/Wedge.js","webpack:///./node_modules/konva/lib/shapes/Sprite.js","webpack:///./node_modules/konva/lib/shapes/Ring.js","webpack:///./node_modules/konva/lib/shapes/Transformer.js","webpack:///./node_modules/konva/lib/shapes/Label.js","webpack:///./node_modules/konva/lib/shapes/Star.js","webpack:///./node_modules/konva/lib/shapes/Line.js"],"names":["__extends","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","defineProperty","exports","value","Arrow","Util_1","Factory_1","Line_1","Validators_1","Global_1","_super","apply","arguments","_sceneFunc","ctx","PI2","Math","PI","points","tp","fromTension","tension","length","getTensionPoints","dx","dy","n","radians","atan2","pointerLength","width","pointerWidth","save","beginPath","translate","rotate","moveTo","lineTo","closePath","restore","pointerAtBeginning","isDashEnabled","dashEnabled","attrs","setLineDash","fillStrokeShape","getSelfRect","lineRect","offset","x","y","height","Line","className","_registerNode","Factory","addGetterSetter","getNumberValidator","Collection","mapMethods","Circle","Shape_1","context","arc","radius","getWidth","getHeight","setWidth","setHeight","Shape","_centroid","_attrsAffectingSize","Image","_useBufferCanvas","params","image","cropWidth","cropHeight","cropX","cropY","hasFill","hasStroke","rect","drawImage","_hitFunc","_a","_b","fromURL","url","callback","img","Util","createImageElement","onload","crossOrigin","src","addComponentsGetterSetter","RegularPolygon","_getPoints","sides","push","sin","cos","minX","maxX","minY","maxY","forEach","point","min","max","TextPath","Path_1","Text_1","EMPTY_STRING","NORMAL","_fillFunc","fillText","partialText","_strokeFunc","strokeText","config","_this","dummyCanvas","createCanvasElement","dataArray","Path","parsePathData","data","on","_setTextData","warn","kerningFunc","setAttr","_getContextFont","textBaseline","textDecoration","fill","fontSize","glyphInfo","i","p0","rotation","text","strokeStyle","lineWidth","stroke","p1","colorKey","getTextWidth","textWidth","getTextHeight","textHeight","setText","Text","_getTextSize","_context","getContext","font","metrics","measureText","parseInt","that","size","letterSpacing","align","textFullWidth","fullPathWidth","l","pathLength","pathCmd","charArr","stringToArray","spacesNumber","split","pIndex","currentT","getNextPathSegment","pathData","j","command","findSegmentToFitCharacter","c","glyphWidth","currLen","attempts","undefined","abs","cumulativePathLength","needNewSegment","getLineLength","getPointOnLine","start","dTheta","end","getPointOnEllipticalArc","getPointOnCubicBezier","getPointOnQuadraticBezier","testChar","lettersInOffset","k","kern","e","midpoint","transposeX","transposeY","info","_fillFuncHit","_strokeFuncHit","Ellipse","rx","radiusX","ry","radiusY","scale","Global_2","string","from","dummyContext","AUTO","CENTER","JUSTIFY","CHANGE_KONVA","CONTEXT_2D","DASH","LEFT","TEXT","TEXT_UPPER","TOP","BOTTOM","MIDDLE","PX_SPACE","SPACE","RIGHT","WORD","CHAR","NONE","ELLIPSIS","ATTR_CHANGE_LIST","attrChangeListLen","normalizeFontFamily","fontFamily","map","family","trim","hasSpace","indexOf","hasQuotes","join","getDummyContext","_partialText","_partialTextX","_partialTextY","checkDefaultFill","fillLinearGradientColorStops","fillRadialGradientColorStops","fillPatternImage","textArr","textArrLen","padding","lineHeightPx","lineHeight","verticalAlign","alignY","totalWidth","shouldUnderline","shouldLineThrough","translateY","lineTranslateX","lineTranslateY","oneWord","obj","lastLine","round","array","li","letter","measureSize","str","_isString","_setAttr","isAuto","Konva","UA","isIE","fontStyle","fontVariant","_addTextLine","line","_getTextWidth","lines","fixedWidth","fixedHeight","maxWidth","maxHeightPx","currentHeightPx","wrap","shouldWrap","wrapAtWord","shouldAddEllipsis","ellipsis","additionalWidth","low","high","match","matchWidth","mid","substr","slice","substrWidth","wrapIndex","nextChar","nextIsSpaceOrDash","lastIndexOf","trimRight","haveSpace","splice","trimLeft","getStrokeScaleEnabled","overWriteSetter","getNumberOrAutoValidator","getBooleanValidator","getStringValidator","Rect","cornerRadius","topLeft","topRight","bottomLeft","bottomRight","getNumberOrArrayOfNumbersValidator","Arc","angle","getAngle","clockwise","outerRadius","innerRadius","ca","isClosed","bezierCurveTo","quadraticCurveTo","cx","cy","theta","psi","fs","r","scaleX","scaleY","strokeShape","inc","t","concat","isNaN","getLength","getPointAtLength","ii","cp","x1","y1","x2","y2","sqrt","dist","P1x","P1y","P2x","P2y","fromX","fromY","m","run","pt","rise","ix","iy","len","u","pRise","pRun","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","replace","RegExp","arr","coords","cpx","cpy","re","charAt","exec","jlen","parsed","parseFloat","prevCmd","ctlPtx","ctlPty","fa","cmd","startX","startY","shift","idx","convertEndpointToCenterParameterization","calcLength","p2","path","psiDeg","xp","yp","lambda","f","cxp","cyp","vMag","v","vRatio","vAngle","acos","Wedge","backCompat","angleDeg","getAngleDeg","setAngleDeg","Sprite","Animation_1","_updated","anim","Animation","updated","frameIndex","isRunning","clearInterval","interval","_setInterval","animation","index","ix4","set","animations","offsets","frameOffsets","ix2","fillShape","setInterval","_updateIndex","frameRate","layer","getLayer","setLayers","stop","getIndex","setIndex","Ring","PIx2","__assign","assign","s","Transformer","Node_1","Rect_1","Group_1","EVENTS_NAME","NODES_RECT","TRANSFORM_CHANGE_STR","ANGLES","TOUCH_DEVICE","_global","getCursor","anchorName","rad","_degToRad","_radToDeg","_inRange","error","ANCHORS_NAMES","MAX_SAFE_INTEGER","getCenter","shape","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","center","getSnap","snaps","newRotationRad","tol","snapped","absDiff","dif","_transforming","_createElements","_handleMouseMove","bind","_handleMouseUp","update","getNode","attachTo","node","setNode","setNodes","_nodes","nodes","detach","getAbsoluteRotation","additionalEvents","prop","onChange","_resetTransformCache","isDragging","_proxyDrag","elementsCreated","findOne","lastPos","getAbsolutePosition","startDrag","otherNode","otherAbs","setAbsolutePosition","getNodes","getActiveAnchor","_movingAnchorName","off","_clearCache","_clearSelfAndDescendantCache","_getNodeRect","_getCache","__getNodeRect","__getNodeShape","rot","relative","getClientRect","skipTransform","skipShadow","skipStroke","ignoreStroke","absScale","getAbsoluteScale","absPos","offsetX","offsetY","box","totalPoints","trans","getAbsoluteTransform","transformed","tr","Transform","invert","getX","getY","_createBack","name","_createAnchor","anchor","strokeWidth","dragDistance","draggable","hitStrokeWidth","self","_handleMouseDown","stopDrag","cancelBubble","cursor","getStage","content","style","_cursorChange","add","back","sceneFunc","getParent","rotateEnabled","rotateAnchorOffset","_sign","hitFunc","shouldOverdrawWholeArea","target","hypotenuse","pow","window","addEventListener","ap","pos","getPointerPosition","_anchorDragOffset","_fire","evt","newHypotenuse","anchorNode","stage","setPointersPositions","pp","newNodePos","oldAbs","newAbs","keepProportion","keepRatio","shiftKey","centeredScaling","altKey","comparePoint","reverseX","reverseY","position","console","Error","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","move","_fitNodesInto","delta","oldRotation","newRotation","rotationSnapTolerance","snappedRot","rotationSnaps","diff","_removeEvents","getTransform","removeEventListener","newAttrs","oldAttrs","minSize","allowNegativeScale","boundBoxFunc","bounded","baseSize","oldTr","newTr","multiply","parentTransform","localTransform","copy","newLocalTransform","decompose","setAttrs","batchDraw","_getRotation","forceUpdate","_batchChangeChild","selector","enabledAnchors","resizeEnabled","anchorSize","find","each","anchorStroke","anchorStrokeWidth","anchorFill","anchorCornerRadius","visible","borderEnabled","borderStroke","borderStrokeWidth","dash","borderDash","isTransforming","stopTransform","destroy","Group","toObject","Node","validateAnchors","val","lineEnabled","rotateHandlerOffset","enabledHandlers","Tag","Label","UP","DOWN","_addListeners","child","_sync","getText","getTag","func","pointerDirection","pointerHeight","tag","direction","Star","numPoints","__spreadArrays","il","a","jl","closed","bezier","_getTensionPoints","_getTensionPointsClosed","_expandPoints","firstControlPoints","_getControlPoints","lastControlPoints","middle","getNumberArrayValidator"],"mappings":"0HACA,IAAIA,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQE,WAAQ,EAChB,IAAIC,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBC,EAAS,EAAQ,QACjBC,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBL,EAAS,SAAUM,GAEnB,SAASN,IACL,OAAkB,OAAXM,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAuE/D,OAzEAD,EAAUmB,EAAOM,GAIjBN,EAAMT,UAAUkB,WAAa,SAAUC,GACnCJ,EAAOf,UAAUkB,WAAWhB,KAAKX,KAAM4B,GACvC,IAAIC,EAAgB,EAAVC,KAAKC,GACXC,EAAShC,KAAKgC,SACdC,EAAKD,EACLE,EAAiC,IAAnBlC,KAAKmC,WAAmBH,EAAOI,OAAS,EACtDF,IACAD,EAAKjC,KAAKqC,oBAEd,IACIC,EAAIC,EADJC,EAAIR,EAAOI,OAEXF,GACAI,EAAKN,EAAOQ,EAAI,IAAMP,EAAGA,EAAGG,OAAS,GAAKH,EAAGA,EAAGG,OAAS,IAAM,EAC/DG,EAAKP,EAAOQ,EAAI,IAAMP,EAAGA,EAAGG,OAAS,GAAKH,EAAGA,EAAGG,OAAS,IAAM,IAG/DE,EAAKN,EAAOQ,EAAI,GAAKR,EAAOQ,EAAI,GAChCD,EAAKP,EAAOQ,EAAI,GAAKR,EAAOQ,EAAI,IAEpC,IAAIC,GAAWX,KAAKY,MAAMH,EAAID,GAAMT,GAAOA,EACvCO,EAASpC,KAAK2C,gBACdC,EAAQ5C,KAAK6C,eACjBjB,EAAIkB,OACJlB,EAAImB,YACJnB,EAAIoB,UAAUhB,EAAOQ,EAAI,GAAIR,EAAOQ,EAAI,IACxCZ,EAAIqB,OAAOR,GACXb,EAAIsB,OAAO,EAAG,GACdtB,EAAIuB,QAAQf,EAAQQ,EAAQ,GAC5BhB,EAAIuB,QAAQf,GAASQ,EAAQ,GAC7BhB,EAAIwB,YACJxB,EAAIyB,UACArD,KAAKsD,uBACL1B,EAAIkB,OACJlB,EAAIoB,UAAUhB,EAAO,GAAIA,EAAO,IAC5BE,GACAI,GAAML,EAAG,GAAKA,EAAG,IAAM,EAAID,EAAO,GAClCO,GAAMN,EAAG,GAAKA,EAAG,IAAM,EAAID,EAAO,KAGlCM,EAAKN,EAAO,GAAKA,EAAO,GACxBO,EAAKP,EAAO,GAAKA,EAAO,IAE5BJ,EAAIqB,QAAQnB,KAAKY,OAAOH,GAAKD,GAAMT,GAAOA,GAC1CD,EAAIsB,OAAO,EAAG,GACdtB,EAAIuB,QAAQf,EAAQQ,EAAQ,GAC5BhB,EAAIuB,QAAQf,GAASQ,EAAQ,GAC7BhB,EAAIwB,YACJxB,EAAIyB,WAER,IAAIE,EAAgBvD,KAAKwD,cACrBD,IACAvD,KAAKyD,MAAMD,aAAc,EACzB5B,EAAI8B,YAAY,KAEpB9B,EAAI+B,gBAAgB3D,MAChBuD,IACAvD,KAAKyD,MAAMD,aAAc,IAGjCtC,EAAMT,UAAUmD,YAAc,WAC1B,IAAIC,EAAWrC,EAAOf,UAAUmD,YAAYjD,KAAKX,MAC7C8D,EAAS9D,KAAK6C,eAAiB,EACnC,MAAO,CACHkB,EAAGF,EAASE,EAAID,EAChBE,EAAGH,EAASG,EAAIF,EAChBlB,MAAOiB,EAASjB,MAAiB,EAATkB,EACxBG,OAAQJ,EAASI,OAAkB,EAATH,IAG3B5C,EA1EC,CA2EVG,EAAO6C,MACTlD,EAAQE,MAAQA,EAChBA,EAAMT,UAAU0D,UAAY,QAC5B5C,EAAS6C,cAAclD,GACvBE,EAAUiD,QAAQC,gBAAgBpD,EAAO,gBAAiB,GAAII,EAAaiD,sBAC3EnD,EAAUiD,QAAQC,gBAAgBpD,EAAO,eAAgB,GAAII,EAAaiD,sBAC1EnD,EAAUiD,QAAQC,gBAAgBpD,EAAO,sBAAsB,GAC/DC,EAAOqD,WAAWC,WAAWvD,I,oCCtG7B,IAAInB,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0D,YAAS,EACjB,IAAIvD,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBmD,EAAU,SAAUlD,GAEpB,SAASkD,IACL,OAAkB,OAAXlD,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAwB/D,OA1BAD,EAAU2E,EAAQlD,GAIlBkD,EAAOjE,UAAUkB,WAAa,SAAUiD,GACpCA,EAAQ7B,YACR6B,EAAQC,IAAI,EAAG,EAAG7E,KAAKyD,MAAMqB,QAAU,EAAG,EAAa,EAAVhD,KAAKC,IAAQ,GAC1D6C,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5B0E,EAAOjE,UAAUsE,SAAW,WACxB,OAAuB,EAAhB/E,KAAK8E,UAEhBJ,EAAOjE,UAAUuE,UAAY,WACzB,OAAuB,EAAhBhF,KAAK8E,UAEhBJ,EAAOjE,UAAUwE,SAAW,SAAUrC,GAC9B5C,KAAK8E,WAAalC,EAAQ,GAC1B5C,KAAK8E,OAAOlC,EAAQ,IAG5B8B,EAAOjE,UAAUyE,UAAY,SAAUjB,GAC/BjE,KAAK8E,WAAab,EAAS,GAC3BjE,KAAK8E,OAAOb,EAAS,IAGtBS,EA3BE,CA4BXC,EAAQQ,OACVnE,EAAQ0D,OAASA,EACjBA,EAAOjE,UAAU2E,WAAY,EAC7BV,EAAOjE,UAAU0D,UAAY,SAC7BO,EAAOjE,UAAU4E,oBAAsB,CAAC,UACxC9D,EAAS6C,cAAcM,GACvBtD,EAAUiD,QAAQC,gBAAgBI,EAAQ,SAAU,EAAGpD,EAAaiD,sBACpEpD,EAAOqD,WAAWC,WAAWC,I,oCCvD7B,IAAI3E,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsE,WAAQ,EAChB,IAAInE,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnB+D,EAAS,SAAU9D,GAEnB,SAAS8D,IACL,OAAkB,OAAX9D,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAkE/D,OApEAD,EAAUuF,EAAO9D,GAIjB8D,EAAM7E,UAAU8E,iBAAmB,WAC/B,OAAO/D,EAAOf,UAAU8E,iBAAiB5E,KAAKX,MAAM,IAExDsF,EAAM7E,UAAUkB,WAAa,SAAUiD,GACnC,IAGIY,EAHA5C,EAAQ5C,KAAK+E,WACbd,EAASjE,KAAKgF,YACdS,EAAQzF,KAAKyD,MAAMgC,MAEvB,GAAIA,EAAO,CACP,IAAIC,EAAY1F,KAAKyD,MAAMiC,UACvBC,EAAa3F,KAAKyD,MAAMkC,WAExBH,EADAE,GAAaC,EACJ,CACLF,EACAzF,KAAK4F,QACL5F,KAAK6F,QACLH,EACAC,EACA,EACA,EACA/C,EACAqB,GAIK,CAACwB,EAAO,EAAG,EAAG7C,EAAOqB,IAGlCjE,KAAK8F,WAAa9F,KAAK+F,eACvBnB,EAAQ7B,YACR6B,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GAC1BW,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAExByF,GACAb,EAAQqB,UAAUxE,MAAMmD,EAASY,IAGzCF,EAAM7E,UAAUyF,SAAW,SAAUtB,GACjC,IAAIhC,EAAQ5C,KAAK4C,QAASqB,EAASjE,KAAKiE,SACxCW,EAAQ7B,YACR6B,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GAC1BW,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5BsF,EAAM7E,UAAUsE,SAAW,WACvB,IAAIoB,EAAIC,EACR,OAAmC,QAA3BD,EAAKnG,KAAKyD,MAAMb,aAA0B,IAAPuD,EAAgBA,GAA+B,QAAvBC,EAAKpG,KAAKyF,eAA4B,IAAPW,OAAgB,EAASA,EAAGxD,QAAU,GAE5I0C,EAAM7E,UAAUuE,UAAY,WACxB,IAAImB,EAAIC,EACR,OAAoC,QAA5BD,EAAKnG,KAAKyD,MAAMQ,cAA2B,IAAPkC,EAAgBA,GAA+B,QAAvBC,EAAKpG,KAAKyF,eAA4B,IAAPW,OAAgB,EAASA,EAAGnC,SAAW,GAE9IqB,EAAMe,QAAU,SAAUC,EAAKC,GAC3B,IAAIC,EAAMrF,EAAOsF,KAAKC,qBACtBF,EAAIG,OAAS,WACT,IAAIlB,EAAQ,IAAIH,EAAM,CAClBG,MAAOe,IAEXD,EAASd,IAEbe,EAAII,YAAc,YAClBJ,EAAIK,IAAMP,GAEPhB,EArEC,CAsEVX,EAAQQ,OACVnE,EAAQsE,MAAQA,EAChBA,EAAM7E,UAAU0D,UAAY,QAC5B5C,EAAS6C,cAAckB,GACvBlE,EAAUiD,QAAQC,gBAAgBgB,EAAO,SACzClE,EAAUiD,QAAQyC,0BAA0BxB,EAAO,OAAQ,CAAC,IAAK,IAAK,QAAS,WAC/ElE,EAAUiD,QAAQC,gBAAgBgB,EAAO,QAAS,EAAGhE,EAAaiD,sBAClEnD,EAAUiD,QAAQC,gBAAgBgB,EAAO,QAAS,EAAGhE,EAAaiD,sBAClEnD,EAAUiD,QAAQC,gBAAgBgB,EAAO,YAAa,EAAGhE,EAAaiD,sBACtEnD,EAAUiD,QAAQC,gBAAgBgB,EAAO,aAAc,EAAGhE,EAAaiD,sBACvEpD,EAAOqD,WAAWC,WAAWa,I,oCCpG7B,IAAIvF,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+F,oBAAiB,EACzB,IAAI5F,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBwF,EAAkB,SAAUvF,GAE5B,SAASuF,IACL,OAAkB,OAAXvF,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAuD/D,OAzDAD,EAAUgH,EAAgBvF,GAI1BuF,EAAetG,UAAUkB,WAAa,SAAUiD,GAC5C,IAAI5C,EAAShC,KAAKgH,aAClBpC,EAAQ7B,YACR6B,EAAQ1B,OAAOlB,EAAO,GAAG+B,EAAG/B,EAAO,GAAGgC,GACtC,IAAK,IAAIxB,EAAI,EAAGA,EAAIR,EAAOI,OAAQI,IAC/BoC,EAAQzB,OAAOnB,EAAOQ,GAAGuB,EAAG/B,EAAOQ,GAAGwB,GAE1CY,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5B+G,EAAetG,UAAUuG,WAAa,WAIlC,IAHA,IAAIC,EAAQjH,KAAKyD,MAAMwD,MACnBnC,EAAS9E,KAAKyD,MAAMqB,QAAU,EAC9B9C,EAAS,GACJQ,EAAI,EAAGA,EAAIyE,EAAOzE,IACvBR,EAAOkF,KAAK,CACRnD,EAAGe,EAAShD,KAAKqF,IAAS,EAAJ3E,EAAQV,KAAKC,GAAMkF,GACzCjD,GAAI,EAAIc,EAAShD,KAAKsF,IAAS,EAAJ5E,EAAQV,KAAKC,GAAMkF,KAGtD,OAAOjF,GAEX+E,EAAetG,UAAUmD,YAAc,WACnC,IAAI5B,EAAShC,KAAKgH,aACdK,EAAOrF,EAAO,GAAG+B,EACjBuD,EAAOtF,EAAO,GAAGgC,EACjBuD,EAAOvF,EAAO,GAAG+B,EACjByD,EAAOxF,EAAO,GAAGgC,EAOrB,OANAhC,EAAOyF,SAAQ,SAAUC,GACrBL,EAAOvF,KAAK6F,IAAIN,EAAMK,EAAM3D,GAC5BuD,EAAOxF,KAAK8F,IAAIN,EAAMI,EAAM3D,GAC5BwD,EAAOzF,KAAK6F,IAAIJ,EAAMG,EAAM1D,GAC5BwD,EAAO1F,KAAK8F,IAAIJ,EAAME,EAAM1D,MAEzB,CACHD,EAAGsD,EACHrD,EAAGuD,EACH3E,MAAO0E,EAAOD,EACdpD,OAAQuD,EAAOD,IAGvBR,EAAetG,UAAUsE,SAAW,WAChC,OAAuB,EAAhB/E,KAAK8E,UAEhBiC,EAAetG,UAAUuE,UAAY,WACjC,OAAuB,EAAhBhF,KAAK8E,UAEhBiC,EAAetG,UAAUwE,SAAW,SAAUrC,GAC1C5C,KAAK8E,OAAOlC,EAAQ,IAExBmE,EAAetG,UAAUyE,UAAY,SAAUjB,GAC3CjE,KAAK8E,OAAOb,EAAS,IAElB8C,EA1DU,CA2DnBpC,EAAQQ,OACVnE,EAAQ+F,eAAiBA,EACzBA,EAAetG,UAAU0D,UAAY,iBACrC4C,EAAetG,UAAU2E,WAAY,EACrC2B,EAAetG,UAAU4E,oBAAsB,CAAC,UAChD9D,EAAS6C,cAAc2C,GACvB3F,EAAUiD,QAAQC,gBAAgByC,EAAgB,SAAU,EAAGzF,EAAaiD,sBAC5EnD,EAAUiD,QAAQC,gBAAgByC,EAAgB,QAAS,EAAGzF,EAAaiD,sBAC3EpD,EAAOqD,WAAWC,WAAWsC,I,oCCvF7B,IAAIhH,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6G,cAAW,EACnB,IAAI1G,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBmD,EAAS,EAAQ,QACjBC,EAAS,EAAQ,QACjBzG,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnByG,EAAe,GAAIC,EAAS,SAChC,SAASC,EAAUtD,GACfA,EAAQuD,SAASnI,KAAKoI,YAAa,EAAG,GAE1C,SAASC,EAAYzD,GACjBA,EAAQ0D,WAAWtI,KAAKoI,YAAa,EAAG,GAE5C,IAAIP,EAAY,SAAUrG,GAEtB,SAASqG,EAASU,GACd,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KAczC,OAbAwI,EAAMC,YAActH,EAAOsF,KAAKiC,sBAChCF,EAAMG,UAAY,GAClBH,EAAMG,UAAYb,EAAOc,KAAKC,cAAcL,EAAM/E,MAAMqF,MACxDN,EAAMO,GAAG,oBAAoB,WACzB/I,KAAK2I,UAAYb,EAAOc,KAAKC,cAAc7I,KAAKyD,MAAMqF,MACtD9I,KAAKgJ,kBAETR,EAAMO,GAAG,uFAAwFP,EAAMQ,cACnGT,GAAUA,EAAO,gBACjBpH,EAAOsF,KAAKwC,KAAK,4EACjBT,EAAMU,YAAYX,EAAO,gBAE7BC,EAAMQ,eACCR,EA2SX,OA3TAzI,EAAU8H,EAAUrG,GAkBpBqG,EAASpH,UAAUkB,WAAa,SAAUiD,GACtCA,EAAQuE,QAAQ,OAAQnJ,KAAKoJ,mBAC7BxE,EAAQuE,QAAQ,eAAgBnJ,KAAKqJ,gBACrCzE,EAAQuE,QAAQ,YAAa,QAC7BvE,EAAQ9B,OACR,IAAIwG,EAAiBtJ,KAAKsJ,iBACtBC,EAAOvJ,KAAKuJ,OACZC,EAAWxJ,KAAKwJ,WAChBC,EAAYzJ,KAAKyJ,UACE,cAAnBH,GACA1E,EAAQ7B,YAEZ,IAAK,IAAI2G,EAAI,EAAGA,EAAID,EAAUrH,OAAQsH,IAAK,CACvC9E,EAAQ9B,OACR,IAAI6G,EAAKF,EAAUC,GAAGC,GACtB/E,EAAQ5B,UAAU2G,EAAG5F,EAAG4F,EAAG3F,GAC3BY,EAAQ3B,OAAOwG,EAAUC,GAAGE,UAC5B5J,KAAKoI,YAAcqB,EAAUC,GAAGG,KAChCjF,EAAQjB,gBAAgB3D,MACD,cAAnBsJ,IACU,IAANI,GACA9E,EAAQ1B,OAAO,EAAGsG,EAAW,EAAI,GAErC5E,EAAQzB,OAAOqG,EAAUA,EAAW,EAAI,IAE5C5E,EAAQvB,UAEW,cAAnBiG,IACA1E,EAAQkF,YAAcP,EACtB3E,EAAQmF,UAAYP,EAAW,GAC/B5E,EAAQoF,UAEZpF,EAAQvB,WAEZwE,EAASpH,UAAUyF,SAAW,SAAUtB,GACpCA,EAAQ7B,YACR,IAAI0G,EAAYzJ,KAAKyJ,UACrB,GAAIA,EAAUrH,QAAU,EAAG,CACvB,IAAIuH,EAAKF,EAAU,GAAGE,GACtB/E,EAAQ1B,OAAOyG,EAAG5F,EAAG4F,EAAG3F,GAE5B,IAAK,IAAI0F,EAAI,EAAGA,EAAID,EAAUrH,OAAQsH,IAAK,CACvC,IAAIO,EAAKR,EAAUC,GAAGO,GACtBrF,EAAQzB,OAAO8G,EAAGlG,EAAGkG,EAAGjG,GAE5BY,EAAQuE,QAAQ,YAAanJ,KAAKwJ,YAClC5E,EAAQuE,QAAQ,cAAenJ,KAAKkK,UACpCtF,EAAQoF,UAEZnC,EAASpH,UAAU0J,aAAe,WAC9B,OAAOnK,KAAKoK,WAEhBvC,EAASpH,UAAU4J,cAAgB,WAE/B,OADAlJ,EAAOsF,KAAKwC,KAAK,6HACVjJ,KAAKsK,YAEhBzC,EAASpH,UAAU8J,QAAU,SAAUV,GACnC,OAAO9B,EAAOyC,KAAK/J,UAAU8J,QAAQ5J,KAAKX,KAAM6J,IAEpDhC,EAASpH,UAAU2I,gBAAkB,WACjC,OAAOrB,EAAOyC,KAAK/J,UAAU2I,gBAAgBzI,KAAKX,OAEtD6H,EAASpH,UAAUgK,aAAe,SAAUZ,GACxC,IAAIpB,EAAczI,KAAKyI,YACnBiC,EAAWjC,EAAYkC,WAAW,MACtCD,EAAS5H,OACT4H,EAASE,KAAO5K,KAAKoJ,kBACrB,IAAIyB,EAAUH,EAASI,YAAYjB,GAEnC,OADAa,EAASrH,UACF,CACHT,MAAOiI,EAAQjI,MACfqB,OAAQ8G,SAAS/K,KAAKyD,MAAM+F,SAAU,MAG9C3B,EAASpH,UAAUuI,aAAe,WAC9B,IAAIgC,EAAOhL,KACPiL,EAAOjL,KAAKyK,aAAazK,KAAKyD,MAAMoG,MACpCqB,EAAgBlL,KAAKkL,gBACrBC,EAAQnL,KAAKmL,QACbjC,EAAclJ,KAAKkJ,cACvBlJ,KAAKoK,UAAYa,EAAKrI,MACtB5C,KAAKsK,WAAaW,EAAKhH,OACvB,IAAImH,EAAgBtJ,KAAK8F,IAAI5H,KAAKoK,YAAcpK,KAAKyD,MAAMoG,MAAQ,IAAIzH,OAAS,GAAK8I,EAAe,GACpGlL,KAAKyJ,UAAY,GAEjB,IADA,IAAI4B,EAAgB,EACXC,EAAI,EAAGA,EAAIN,EAAKrC,UAAUvG,OAAQkJ,IACnCN,EAAKrC,UAAU2C,GAAGC,WAAa,IAC/BF,GAAiBL,EAAKrC,UAAU2C,GAAGC,YAG3C,IAAIzH,EAAS,EACC,WAAVqH,IACArH,EAAShC,KAAK8F,IAAI,EAAGyD,EAAgB,EAAID,EAAgB,IAE/C,UAAVD,IACArH,EAAShC,KAAK8F,IAAI,EAAGyD,EAAgBD,IA+HzC,IA7HA,IAEIzB,EAAIM,EAAIuB,EAFRC,EAAU1D,EAAO2D,cAAc1L,KAAK6J,QACpC8B,EAAe3L,KAAK6J,OAAO+B,MAAM,KAAKxJ,OAAS,EAE/CyJ,GAAU,EACVC,EAAW,EACXC,EAAqB,WACrBD,EAAW,EAEX,IADA,IAAIE,EAAWhB,EAAKrC,UACXsD,EAAIJ,EAAS,EAAGI,EAAID,EAAS5J,OAAQ6J,IAAK,CAC/C,GAAID,EAASC,GAAGV,WAAa,EAEzB,OADAM,EAASI,EACFD,EAASC,GAEa,MAAxBD,EAASC,GAAGC,UACjBvC,EAAK,CACD5F,EAAGiI,EAASC,GAAGjK,OAAO,GACtBgC,EAAGgI,EAASC,GAAGjK,OAAO,KAIlC,MAAO,IAEPmK,EAA4B,SAAUC,GACtC,IAAIC,EAAarB,EAAKP,aAAa2B,GAAGxJ,MAAQsI,EACpC,MAANkB,GAAuB,YAAVjB,IACbkB,IAAehB,EAAgBD,GAAiBO,GAEpD,IAAIW,EAAU,EACVC,EAAW,EACftC,OAAKuC,EACL,MAAO1K,KAAK2K,IAAIJ,EAAaC,GAAWD,EAAa,KACjDE,EAAW,GAAI,CACfA,IACA,IAAIG,EAAuBJ,EAC3B,WAAmBE,IAAZhB,EACHA,EAAUO,IACNP,GACAkB,EAAuBlB,EAAQD,WAAac,IAC5CK,GAAwBlB,EAAQD,WAChCC,OAAUgB,GAGlB,GAAIhB,IAAY,SAAagB,IAAP7C,EAClB,OAEJ,IAAIgD,GAAiB,EACrB,OAAQnB,EAAQU,SACZ,IAAK,IACGpE,EAAOc,KAAKgE,cAAcjD,EAAG5F,EAAG4F,EAAG3F,EAAGwH,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,IAAMqK,EAC9EpC,EAAKnC,EAAOc,KAAKiE,eAAeR,EAAY1C,EAAG5F,EAAG4F,EAAG3F,EAAGwH,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAI2H,EAAG5F,EAAG4F,EAAG3F,GAGvGwH,OAAUgB,EAEd,MACJ,IAAK,IACD,IAAIM,EAAQtB,EAAQxJ,OAAO,GACvB+K,EAASvB,EAAQxJ,OAAO,GACxBgL,EAAMxB,EAAQxJ,OAAO,GAAK+K,EACb,IAAbjB,EACAA,EAAWgB,EAAQ,KAEdT,EAAaC,EAClBR,GAAchK,KAAKC,GAAK,IAASgL,EAAUjL,KAAK2K,IAAIM,GAGpDjB,GAAchK,KAAKC,GAAK,IAASgL,EAAUjL,KAAK2K,IAAIM,IAEnDA,EAAS,GAAKjB,EAAWkB,GACzBD,GAAU,GAAKjB,EAAWkB,KAC3BlB,EAAWkB,EACXL,GAAiB,GAErB1C,EAAKnC,EAAOc,KAAKqE,wBAAwBzB,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAI8J,EAAUN,EAAQxJ,OAAO,IAC9I,MACJ,IAAK,IACgB,IAAb8J,EAEIA,EADAO,EAAab,EAAQD,WACV,KAGAc,EAAab,EAAQD,WAG/Bc,EAAaC,EAClBR,IAAaO,EAAaC,GAAWd,EAAQD,WAAa,EAG1DO,EAAWhK,KAAK8F,IAAIkE,GAAYQ,EAAUD,GAAcb,EAAQD,WAAa,EAAG,GAEhFO,EAAW,IACXA,EAAW,EACXa,GAAiB,GAErB1C,EAAKnC,EAAOc,KAAKsE,sBAAsBpB,EAAUN,EAAQsB,MAAM/I,EAAGyH,EAAQsB,MAAM9I,EAAGwH,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,IACjM,MACJ,IAAK,IACgB,IAAb8J,EACAA,EAAWO,EAAab,EAAQD,WAE3Bc,EAAaC,EAClBR,IAAaO,EAAaC,GAAWd,EAAQD,WAG7CO,IAAaQ,EAAUD,GAAcb,EAAQD,WAE7CO,EAAW,IACXA,EAAW,EACXa,GAAiB,GAErB1C,EAAKnC,EAAOc,KAAKuE,0BAA0BrB,EAAUN,EAAQsB,MAAM/I,EAAGyH,EAAQsB,MAAM9I,EAAGwH,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,GAAIwJ,EAAQxJ,OAAO,IAC/J,WAEGwK,IAAPvC,IACAqC,EAAUxE,EAAOc,KAAKgE,cAAcjD,EAAG5F,EAAG4F,EAAG3F,EAAGiG,EAAGlG,EAAGkG,EAAGjG,IAEzD2I,IACAA,GAAiB,EACjBnB,OAAUgB,KAIlBY,EAAW,IACXf,EAAarB,EAAKP,aAAa2C,GAAUxK,MAAQsI,EACjDmC,EAAkBvJ,EAASuI,EAAa,EACnCiB,EAAI,EAAGA,EAAID,EAAiBC,IAAK,CAEtC,GADAnB,EAA0BiB,QACfZ,IAAP7C,QAA2B6C,IAAPvC,EACpB,MAEJN,EAAKM,EAET,IAAK,IAAIP,EAAI,EAAGA,EAAI+B,EAAQrJ,OAAQsH,IAAK,CAErC,GADAyC,EAA0BV,EAAQ/B,SACvB8C,IAAP7C,QAA2B6C,IAAPvC,EACpB,MAEJ,IAAIrH,EAAQkF,EAAOc,KAAKgE,cAAcjD,EAAG5F,EAAG4F,EAAG3F,EAAGiG,EAAGlG,EAAGkG,EAAGjG,GACvDuJ,EAAO,EACX,GAAIrE,EACA,IACIqE,EAAOrE,EAAYuC,EAAQ/B,EAAI,GAAI+B,EAAQ/B,IAAM1J,KAAKwJ,WAE1D,MAAOgE,GACHD,EAAO,EAGf5D,EAAG5F,GAAKwJ,EACRtD,EAAGlG,GAAKwJ,EACRvN,KAAKoK,WAAamD,EAClB,IAAIE,EAAW3F,EAAOc,KAAKiE,eAAeU,EAAO3K,EAAQ,EAAK+G,EAAG5F,EAAG4F,EAAG3F,EAAGiG,EAAGlG,EAAGkG,EAAGjG,GAC/E4F,EAAW9H,KAAKY,MAAMuH,EAAGjG,EAAI2F,EAAG3F,EAAGiG,EAAGlG,EAAI4F,EAAG5F,GACjD/D,KAAKyJ,UAAUvC,KAAK,CAChBwG,WAAYD,EAAS1J,EACrB4J,WAAYF,EAASzJ,EACrB6F,KAAM4B,EAAQ/B,GACdE,SAAUA,EACVD,GAAIA,EACJM,GAAIA,IAERN,EAAKM,IAGbpC,EAASpH,UAAUmD,YAAc,WAC7B,IAAK5D,KAAKyJ,UAAUrH,OAChB,MAAO,CACH2B,EAAG,EACHC,EAAG,EACHpB,MAAO,EACPqB,OAAQ,GAGhB,IAAIjC,EAAS,GACbhC,KAAKyJ,UAAUhC,SAAQ,SAAUmG,GAC7B5L,EAAOkF,KAAK0G,EAAKjE,GAAG5F,GACpB/B,EAAOkF,KAAK0G,EAAKjE,GAAG3F,GACpBhC,EAAOkF,KAAK0G,EAAK3D,GAAGlG,GACpB/B,EAAOkF,KAAK0G,EAAK3D,GAAGjG,MAOxB,IALA,IAIID,EAAGC,EAJHqD,EAAOrF,EAAO,IAAM,EACpBsF,EAAOtF,EAAO,IAAM,EACpBuF,EAAOvF,EAAO,IAAM,EACpBwF,EAAOxF,EAAO,IAAM,EAEf0H,EAAI,EAAGA,EAAI1H,EAAOI,OAAS,EAAGsH,IACnC3F,EAAI/B,EAAW,EAAJ0H,GACX1F,EAAIhC,EAAW,EAAJ0H,EAAQ,GACnBrC,EAAOvF,KAAK6F,IAAIN,EAAMtD,GACtBuD,EAAOxF,KAAK8F,IAAIN,EAAMvD,GACtBwD,EAAOzF,KAAK6F,IAAIJ,EAAMvD,GACtBwD,EAAO1F,KAAK8F,IAAIJ,EAAMxD,GAE1B,IAAIwF,EAAWxJ,KAAKwJ,WACpB,MAAO,CACHzF,EAAGsD,EAAOmC,EAAW,EACrBxF,EAAGuD,EAAOiC,EAAW,EACrB5G,MAAO0E,EAAOD,EAAOmC,EACrBvF,OAAQuD,EAAOD,EAAOiC,IAGvB3B,EA5TI,CA6TblD,EAAQQ,OACVnE,EAAQ6G,SAAWA,EACnBA,EAASpH,UAAUyH,UAAYA,EAC/BL,EAASpH,UAAU4H,YAAcA,EACjCR,EAASpH,UAAUoN,aAAe3F,EAClCL,EAASpH,UAAUqN,eAAiBzF,EACpCR,EAASpH,UAAU0D,UAAY,WAC/B0D,EAASpH,UAAU4E,oBAAsB,CAAC,OAAQ,WAAY,QAC9D9D,EAAS6C,cAAcyD,GACvBzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,QAC5CzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,aAAc,SAC1DzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,WAAY,GAAIvG,EAAaiD,sBACzEnD,EAAUiD,QAAQC,gBAAgBuD,EAAU,YAAaI,GACzD7G,EAAUiD,QAAQC,gBAAgBuD,EAAU,QAAS,QACrDzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,gBAAiB,EAAGvG,EAAaiD,sBAC7EnD,EAAUiD,QAAQC,gBAAgBuD,EAAU,eAAgB,UAC5DzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,cAAeI,GAC3D7G,EAAUiD,QAAQC,gBAAgBuD,EAAU,OAAQG,GACpD5G,EAAUiD,QAAQC,gBAAgBuD,EAAU,iBAAkB,MAC9DzG,EAAUiD,QAAQC,gBAAgBuD,EAAU,cAAe,MAC3D1G,EAAOqD,WAAWC,WAAWoD,I,oCC9W7B,IAAI9H,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+M,aAAU,EAClB,IAAI5M,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBwM,EAAW,SAAUvM,GAErB,SAASuM,IACL,OAAkB,OAAXvM,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KA0B/D,OA5BAD,EAAUgO,EAASvM,GAInBuM,EAAQtN,UAAUkB,WAAa,SAAUiD,GACrC,IAAIoJ,EAAKhO,KAAKiO,UAAWC,EAAKlO,KAAKmO,UACnCvJ,EAAQ7B,YACR6B,EAAQ9B,OACJkL,IAAOE,GACPtJ,EAAQwJ,MAAM,EAAGF,EAAKF,GAE1BpJ,EAAQC,IAAI,EAAG,EAAGmJ,EAAI,EAAa,EAAVlM,KAAKC,IAAQ,GACtC6C,EAAQvB,UACRuB,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5B+N,EAAQtN,UAAUsE,SAAW,WACzB,OAAwB,EAAjB/E,KAAKiO,WAEhBF,EAAQtN,UAAUuE,UAAY,WAC1B,OAAwB,EAAjBhF,KAAKmO,WAEhBJ,EAAQtN,UAAUwE,SAAW,SAAUrC,GACnC5C,KAAKiO,QAAQrL,EAAQ,IAEzBmL,EAAQtN,UAAUyE,UAAY,SAAUjB,GACpCjE,KAAKmO,QAAQlK,EAAS,IAEnB8J,EA7BG,CA8BZpJ,EAAQQ,OACVnE,EAAQ+M,QAAUA,EAClBA,EAAQtN,UAAU0D,UAAY,UAC9B4J,EAAQtN,UAAU2E,WAAY,EAC9B2I,EAAQtN,UAAU4E,oBAAsB,CAAC,UAAW,WACpD9D,EAAS6C,cAAc2J,GACvB3M,EAAUiD,QAAQyC,0BAA0BiH,EAAS,SAAU,CAAC,IAAK,MACrE3M,EAAUiD,QAAQC,gBAAgByJ,EAAS,UAAW,EAAGzM,EAAaiD,sBACtEnD,EAAUiD,QAAQC,gBAAgByJ,EAAS,UAAW,EAAGzM,EAAaiD,sBACtEpD,EAAOqD,WAAWC,WAAWsJ,I,kCC3D7B,IAAIhO,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwJ,KAAOxJ,EAAQ0K,mBAAgB,EACvC,IAAIvK,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBpD,EAAW,EAAQ,QACnBD,EAAe,EAAQ,QACvB+M,EAAW,EAAQ,QACvB,SAAS3C,EAAc4C,GACnB,OAAO/N,MAAMgO,KAAKD,GAEtBtN,EAAQ0K,cAAgBA,EACxB,IA8BI8C,EA9BAC,EAAO,OAAQC,EAAS,SAAUC,EAAU,UAAWC,EAAe,eAAgBC,EAAa,KAAMC,EAAO,IAAKC,EAAO,OAAQC,EAAO,OAAQC,EAAa,OAAQC,EAAM,MAAOC,EAAS,SAAUC,EAAS,SAAUnH,EAAS,SAAUoH,EAAW,MAAOC,EAAQ,IAAKC,EAAQ,QAASC,EAAO,OAAQC,EAAO,OAAQC,EAAO,OAAQC,EAAW,IAAKC,EAAmB,CAC9W,aACA,WACA,YACA,cACA,UACA,QACA,gBACA,aACA,OACA,QACA,SACA,OACA,WACA,iBACDC,EAAoBD,EAAiBxN,OACxC,SAAS0N,EAAoBC,GACzB,OAAOA,EACFnE,MAAM,KACNoE,KAAI,SAAUC,GACfA,EAASA,EAAOC,OAChB,IAAIC,EAAWF,EAAOG,QAAQ,MAAQ,EAClCC,EAAYJ,EAAOG,QAAQ,MAAQ,GAAKH,EAAOG,QAAQ,MAAQ,EAInE,OAHID,IAAaE,IACbJ,EAAS,IAAOA,EAAS,KAEtBA,KAENK,KAAK,MAGd,SAASC,IACL,OAAI/B,IAGJA,EAAerN,EAAOsF,KAAKiC,sBAAsBiC,WAAWkE,GACrDL,GAEX,SAAStG,EAAUtD,GACfA,EAAQuD,SAASnI,KAAKwQ,aAAcxQ,KAAKyQ,cAAezQ,KAAK0Q,eAEjE,SAASrI,EAAYzD,GACjBA,EAAQ0D,WAAWtI,KAAKwQ,aAAcxQ,KAAKyQ,cAAezQ,KAAK0Q,eAEnE,SAASC,EAAiBpI,GAOtB,OANAA,EAASA,GAAU,GACdA,EAAOqI,8BACPrI,EAAOsI,8BACPtI,EAAOuI,mBACRvI,EAAOgB,KAAOhB,EAAOgB,MAAQ,SAE1BhB,EAEX,IAAIiC,EAAQ,SAAUhJ,GAElB,SAASgJ,EAAKjC,GACV,IAAIC,EAAQhH,EAAOb,KAAKX,KAAM2Q,EAAiBpI,KAAYvI,KAC3DwI,EAAMiI,cAAgB,EACtBjI,EAAMkI,cAAgB,EACtB,IAAK,IAAIlO,EAAI,EAAGA,EAAIqN,EAAmBrN,IACnCgG,EAAMO,GAAG6G,EAAiBpN,GAAKoM,EAAcpG,EAAMQ,cAGvD,OADAR,EAAMQ,eACCR,EAiQX,OA1QAzI,EAAUyK,EAAMhJ,GAWhBgJ,EAAK/J,UAAUkB,WAAa,SAAUiD,GAClC,IAAImM,EAAU/Q,KAAK+Q,QAASC,EAAaD,EAAQ3O,OACjD,GAAKpC,KAAK6J,OAAV,CAGA,IAAgbrH,EAA5ayO,EAAUjR,KAAKiR,UAAWzH,EAAWxJ,KAAKwJ,WAAY0H,EAAelR,KAAKmR,aAAe3H,EAAU4H,EAAgBpR,KAAKoR,gBAAiBC,EAAS,EAAGlG,EAAQnL,KAAKmL,QAASmG,EAAatR,KAAK+E,WAAYmG,EAAgBlL,KAAKkL,gBAAiB3B,EAAOvJ,KAAKuJ,OAAQD,EAAiBtJ,KAAKsJ,iBAAkBiI,GAA2D,IAAzCjI,EAAe8G,QAAQ,aAAqBoB,GAAgE,IAA5ClI,EAAe8G,QAAQ,gBACpZqB,EAAa,EAEbC,GADAD,EAAaP,EAAe,EACX,GACjBS,EAAiB,EAWrB,IAVA/M,EAAQuE,QAAQ,OAAQnJ,KAAKoJ,mBAC7BxE,EAAQuE,QAAQ,eAAgBiG,GAChCxK,EAAQuE,QAAQ,YAAa4F,GACzBqC,IAAkBhC,EAClBiC,GAAUrR,KAAKgF,YAAcgM,EAAaE,EAAyB,EAAVD,GAAe,EAEnEG,IAAkBjC,IACvBkC,EAASrR,KAAKgF,YAAcgM,EAAaE,EAAyB,EAAVD,GAE5DrM,EAAQ5B,UAAUiO,EAASI,EAASJ,GAC/BzO,EAAI,EAAGA,EAAIwO,EAAYxO,IAAK,CACzBkP,EAAiB,EACjBC,EAAiB,EADrB,IAE2FhG,EAAciG,EAAS7H,EAA9G8H,EAAMd,EAAQvO,GAAIqH,EAAOgI,EAAIhI,KAAMjH,EAAQiP,EAAIjP,MAAOkP,EAAWtP,IAAMwO,EAAa,EAwCxF,GAvCApM,EAAQ9B,OACJqI,IAAUoE,EACVmC,GAAkBJ,EAAa1O,EAAkB,EAAVqO,EAElC9F,IAAUuD,IACfgD,IAAmBJ,EAAa1O,EAAkB,EAAVqO,GAAe,GAEvDM,IACA3M,EAAQ9B,OACR8B,EAAQ7B,YACR6B,EAAQ1B,OAAOwO,EAAgBD,EAAaE,EAAiB7P,KAAKiQ,MAAMvI,EAAW,IACnFmC,EAAe9B,EAAK+B,MAAM,KAAKxJ,OAAS,EACxCwP,EAA2B,IAAjBjG,EACV5B,EACIoB,IAAUwD,GAAWmD,IAAaF,EAC5BN,EAAuB,EAAVL,EACbrO,EACVgC,EAAQzB,OAAOuO,EAAiB5P,KAAKiQ,MAAMhI,GAAY0H,EAAaE,EAAiB7P,KAAKiQ,MAAMvI,EAAW,IAC3G5E,EAAQmF,UAAYP,EAAW,GAC/B5E,EAAQkF,YAAcP,EACtB3E,EAAQoF,SACRpF,EAAQvB,WAERmO,IACA5M,EAAQ9B,OACR8B,EAAQ7B,YACR6B,EAAQ1B,OAAOwO,EAAgBD,EAAaE,GAC5ChG,EAAe9B,EAAK+B,MAAM,KAAKxJ,OAAS,EACxCwP,EAA2B,IAAjBjG,EACV5B,EACIoB,IAAUwD,GAAWmD,IAAaF,EAC5BN,EAAuB,EAAVL,EACbrO,EACVgC,EAAQzB,OAAOuO,EAAiB5P,KAAKiQ,MAAMhI,GAAY0H,EAAaE,GACpE/M,EAAQmF,UAAYP,EAAW,GAC/B5E,EAAQkF,YAAcP,EACtB3E,EAAQoF,SACRpF,EAAQvB,WAEU,IAAlB6H,GAAuBC,IAAUwD,EAAS,CAC1ChD,EAAe9B,EAAK+B,MAAM,KAAKxJ,OAAS,EAExC,IADA,IAAI4P,EAAQtG,EAAc7B,GACjBoI,EAAK,EAAGA,EAAKD,EAAM5P,OAAQ6P,IAAM,CACtC,IAAIC,EAASF,EAAMC,GACJ,MAAXC,GAAkB1P,IAAMwO,EAAa,GAAK7F,IAAUwD,IACpD+C,IAAmBJ,EAAuB,EAAVL,EAAcrO,GAAS+I,GAE3D3L,KAAKyQ,cAAgBiB,EACrB1R,KAAK0Q,cAAgBe,EAAaE,EAClC3R,KAAKwQ,aAAe0B,EACpBtN,EAAQjB,gBAAgB3D,MACxB0R,GAAkB1R,KAAKmS,YAAYD,GAAQtP,MAAQsI,QAIvDlL,KAAKyQ,cAAgBiB,EACrB1R,KAAK0Q,cAAgBe,EAAaE,EAClC3R,KAAKwQ,aAAe3G,EACpBjF,EAAQjB,gBAAgB3D,MAE5B4E,EAAQvB,UACJ2N,EAAa,IACbS,GAAcP,MAI1B1G,EAAK/J,UAAUyF,SAAW,SAAUtB,GAChC,IAAIhC,EAAQ5C,KAAK+E,WAAYd,EAASjE,KAAKgF,YAC3CJ,EAAQ7B,YACR6B,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GAC1BW,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5BwK,EAAK/J,UAAU8J,QAAU,SAAUV,GAC/B,IAAIuI,EAAMjR,EAAOsF,KAAK4L,UAAUxI,GAC1BA,EACS,OAATA,QAA0B2C,IAAT3C,EACb,GACAA,EAAO,GAEjB,OADA7J,KAAKsS,SAAStD,EAAMoD,GACbpS,MAEXwK,EAAK/J,UAAUsE,SAAW,WACtB,IAAIwN,EAASvS,KAAKyD,MAAMb,QAAU6L,QAA6BjC,IAArBxM,KAAKyD,MAAMb,MACrD,OAAO2P,EAASvS,KAAKmK,eAAkC,EAAjBnK,KAAKiR,UAAgBjR,KAAKyD,MAAMb,OAE1E4H,EAAK/J,UAAUuE,UAAY,WACvB,IAAIuN,EAASvS,KAAKyD,MAAMQ,SAAWwK,QAA8BjC,IAAtBxM,KAAKyD,MAAMQ,OACtD,OAAOsO,EACDvS,KAAKwJ,WAAaxJ,KAAK+Q,QAAQ3O,OAASpC,KAAKmR,aAC1B,EAAjBnR,KAAKiR,UACPjR,KAAKyD,MAAMQ,QAErBuG,EAAK/J,UAAU0J,aAAe,WAC1B,OAAOnK,KAAKoK,WAEhBI,EAAK/J,UAAU4J,cAAgB,WAE3B,OADAlJ,EAAOsF,KAAKwC,KAAK,6HACVjJ,KAAKsK,YAEhBE,EAAK/J,UAAU0R,YAAc,SAAUtI,GACnC,IAA8DgB,EAA1DH,EAAW6F,IAAmB/G,EAAWxJ,KAAKwJ,WAKlD,OAJAkB,EAAS5H,OACT4H,EAASE,KAAO5K,KAAKoJ,kBACrByB,EAAUH,EAASI,YAAYjB,GAC/Ba,EAASrH,UACF,CACHT,MAAOiI,EAAQjI,MACfqB,OAAQuF,IAGhBgB,EAAK/J,UAAU2I,gBAAkB,WAC7B,OAAI7H,EAASiR,MAAMC,GAAGC,KACV1S,KAAK2S,YACTrD,EACAtP,KAAKwJ,WACL6F,EACArP,KAAK+P,aAEL/P,KAAK2S,YACTrD,EACAtP,KAAK4S,cACLtD,GACCtP,KAAKwJ,WAAa6F,GACnBS,EAAoB9P,KAAK+P,eAEjCvF,EAAK/J,UAAUoS,aAAe,SAAUC,GAChC9S,KAAKmL,UAAYwD,IACjBmE,EAAOA,EAAK5C,QAEhB,IAAItN,EAAQ5C,KAAK+S,cAAcD,GAC/B,OAAO9S,KAAK+Q,QAAQ7J,KAAK,CAAE2C,KAAMiJ,EAAMlQ,MAAOA,KAElD4H,EAAK/J,UAAUsS,cAAgB,SAAUlJ,GACrC,IAAIqB,EAAgBlL,KAAKkL,gBACrB9I,EAASyH,EAAKzH,OAClB,OAAQmO,IAAkBzF,YAAYjB,GAAMjH,OACvCR,EAAS8I,GAAiB9I,EAAS,GAAK,IAEjDoI,EAAK/J,UAAUuI,aAAe,WAC1B,IAAIgK,EAAQhT,KAAK6J,OAAO+B,MAAM,MAAOpC,GAAYxJ,KAAKwJ,WAAYY,EAAY,EAAG8G,EAAelR,KAAKmR,aAAe3H,EAAU5G,EAAQ5C,KAAKyD,MAAMb,MAAOqB,EAASjE,KAAKyD,MAAMQ,OAAQgP,EAAarQ,IAAU6L,QAAkBjC,IAAV5J,EAAqBsQ,EAAcjP,IAAWwK,QAAmBjC,IAAXvI,EAAsBgN,EAAUjR,KAAKiR,UAAWkC,EAAWvQ,EAAkB,EAAVqO,EAAamC,EAAcnP,EAAmB,EAAVgN,EAAaoC,EAAkB,EAAGC,EAAOtT,KAAKsT,OAAQC,EAAaD,IAAS5D,EAAM8D,EAAaF,IAAS7D,GAAQ8D,EAAYE,EAAoBzT,KAAK0T,WACrgB1T,KAAK+Q,QAAU,GACfR,IAAkB3F,KAAO5K,KAAKoJ,kBAE9B,IADA,IAAIuK,EAAkBF,EAAoBzT,KAAK+S,cAAcpD,GAAY,EAChEjG,EAAI,EAAG9B,EAAMoL,EAAM5Q,OAAQsH,EAAI9B,IAAO8B,EAAG,CAC9C,IAAIoJ,EAAOE,EAAMtJ,GACbK,EAAY/J,KAAK+S,cAAcD,GACnC,GAAIG,GAAclJ,EAAYoJ,EAC1B,MAAOL,EAAK1Q,OAAS,EAAG,CACpB,IAAIwR,EAAM,EAAGC,EAAOf,EAAK1Q,OAAQ0R,EAAQ,GAAIC,EAAa,EAC1D,MAAOH,EAAMC,EAAM,CACf,IAAIG,EAAOJ,EAAMC,IAAU,EAAGI,EAASnB,EAAKoB,MAAM,EAAGF,EAAM,GAAIG,EAAcnU,KAAK+S,cAAckB,GAAUN,EACtGQ,GAAehB,GACfS,EAAMI,EAAM,EACZF,EAAQG,EACRF,EAAaI,GAGbN,EAAOG,EAGf,IAAIF,EAmDA,MAlDA,GAAIN,EAAY,CACZ,IAAIY,EACAC,EAAWvB,EAAKgB,EAAM1R,QACtBkS,EAAoBD,IAAa/E,GAAS+E,IAAavF,EAEvDsF,EADAE,GAAqBP,GAAcZ,EACvBW,EAAM1R,OAIdN,KAAK8F,IAAIkM,EAAMS,YAAYjF,GAAQwE,EAAMS,YAAYzF,IACjD,EAERsF,EAAY,IACZR,EAAMQ,EACNN,EAAQA,EAAMI,MAAM,EAAGN,GACvBG,EAAa/T,KAAK+S,cAAce,IAOxC,GAJAA,EAAQA,EAAMU,YACdxU,KAAK6S,aAAaiB,GAClB1J,EAAYtI,KAAK8F,IAAIwC,EAAW2J,GAChCV,GAAmBnC,GACdqC,GACAL,GAAeG,EAAkBnC,EAAekC,EAAc,CAC/D,IAAItB,EAAW9R,KAAK+Q,QAAQ/Q,KAAK+Q,QAAQ3O,OAAS,GAClD,GAAI0P,GACI2B,EAAmB,CACnB,IAAIgB,EAAYzU,KAAK+S,cAAcjB,EAASjI,KAAO8F,GAAYwD,EAC1DsB,IACD3C,EAASjI,KAAOiI,EAASjI,KAAKqK,MAAM,EAAGpC,EAASjI,KAAKzH,OAAS,IAElEpC,KAAK+Q,QAAQ2D,OAAO1U,KAAK+Q,QAAQ3O,OAAS,EAAG,GAC7CpC,KAAK6S,aAAaf,EAASjI,KAAO8F,GAG1C,MAIJ,GAFAmD,EAAOA,EAAKoB,MAAMN,GAClBd,EAAOA,EAAK6B,WACR7B,EAAK1Q,OAAS,IACd2H,EAAY/J,KAAK+S,cAAcD,GAC3B/I,GAAaoJ,GAAU,CACvBnT,KAAK6S,aAAaC,GAClBO,GAAmBnC,EACnB9G,EAAYtI,KAAK8F,IAAIwC,EAAWL,GAChC,YAUhB/J,KAAK6S,aAAaC,GAClBO,GAAmBnC,EACnB9G,EAAYtI,KAAK8F,IAAIwC,EAAWL,GAEpC,GAAImJ,GAAeG,EAAkBnC,EAAekC,EAChD,MAGRpT,KAAKsK,WAAad,EAClBxJ,KAAKoK,UAAYA,GAErBI,EAAK/J,UAAUmU,sBAAwB,WACnC,OAAO,GAEJpK,EA3QA,CA4QT7F,EAAQQ,OACVnE,EAAQwJ,KAAOA,EACfA,EAAK/J,UAAUyH,UAAYA,EAC3BsC,EAAK/J,UAAU4H,YAAcA,EAC7BmC,EAAK/J,UAAU0D,UAAY8K,EAC3BzE,EAAK/J,UAAU4E,oBAAsB,CACjC,OACA,WACA,UACA,OACA,aACA,iBAEJgJ,EAASjK,cAAcoG,GACvBpJ,EAAUiD,QAAQwQ,gBAAgBrK,EAAM,QAASlJ,EAAawT,4BAC9D1T,EAAUiD,QAAQwQ,gBAAgBrK,EAAM,SAAUlJ,EAAawT,4BAC/D1T,EAAUiD,QAAQC,gBAAgBkG,EAAM,aAAc,SACtDpJ,EAAUiD,QAAQC,gBAAgBkG,EAAM,WAAY,GAAIlJ,EAAaiD,sBACrEnD,EAAUiD,QAAQC,gBAAgBkG,EAAM,YAAavC,GACrD7G,EAAUiD,QAAQC,gBAAgBkG,EAAM,cAAevC,GACvD7G,EAAUiD,QAAQC,gBAAgBkG,EAAM,UAAW,EAAGlJ,EAAaiD,sBACnEnD,EAAUiD,QAAQC,gBAAgBkG,EAAM,QAASuE,GACjD3N,EAAUiD,QAAQC,gBAAgBkG,EAAM,gBAAiB0E,GACzD9N,EAAUiD,QAAQC,gBAAgBkG,EAAM,aAAc,EAAGlJ,EAAaiD,sBACtEnD,EAAUiD,QAAQC,gBAAgBkG,EAAM,OAAQgF,GAChDpO,EAAUiD,QAAQC,gBAAgBkG,EAAM,YAAY,EAAOlJ,EAAayT,uBACxE3T,EAAUiD,QAAQC,gBAAgBkG,EAAM,gBAAiB,EAAGlJ,EAAaiD,sBACzEnD,EAAUiD,QAAQC,gBAAgBkG,EAAM,OAAQ,GAAIlJ,EAAa0T,sBACjE5T,EAAUiD,QAAQC,gBAAgBkG,EAAM,iBAAkB,IAC1DrJ,EAAOqD,WAAWC,WAAW+F,I,oCCvX7B,IAAIzK,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiU,UAAO,EACf,IAAI9T,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBpD,EAAW,EAAQ,QACnBD,EAAe,EAAQ,QACvB2T,EAAQ,SAAUzT,GAElB,SAASyT,IACL,OAAkB,OAAXzT,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAmC/D,OArCAD,EAAUkV,EAAMzT,GAIhByT,EAAKxU,UAAUkB,WAAa,SAAUiD,GAClC,IAAIsQ,EAAelV,KAAKkV,eAAgBtS,EAAQ5C,KAAK4C,QAASqB,EAASjE,KAAKiE,SAE5E,GADAW,EAAQ7B,YACHmS,EAGA,CACD,IAAIC,EAAU,EACVC,EAAW,EACXC,EAAa,EACbC,EAAc,EACU,kBAAjBJ,EACPC,EAAUC,EAAWC,EAAaC,EAAcxT,KAAK6F,IAAIuN,EAActS,EAAQ,EAAGqB,EAAS,IAG3FkR,EAAUrT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GAC7DmR,EAAWtT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GAC9DqR,EAAcxT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GACjEoR,EAAavT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,IAEpEW,EAAQ1B,OAAOiS,EAAS,GACxBvQ,EAAQzB,OAAOP,EAAQwS,EAAU,GACjCxQ,EAAQC,IAAIjC,EAAQwS,EAAUA,EAAUA,EAAqB,EAAVtT,KAAKC,GAAU,EAAG,GAAG,GACxE6C,EAAQzB,OAAOP,EAAOqB,EAASqR,GAC/B1Q,EAAQC,IAAIjC,EAAQ0S,EAAarR,EAASqR,EAAaA,EAAa,EAAGxT,KAAKC,GAAK,GAAG,GACpF6C,EAAQzB,OAAOkS,EAAYpR,GAC3BW,EAAQC,IAAIwQ,EAAYpR,EAASoR,EAAYA,EAAYvT,KAAKC,GAAK,EAAGD,KAAKC,IAAI,GAC/E6C,EAAQzB,OAAO,EAAGgS,GAClBvQ,EAAQC,IAAIsQ,EAASA,EAASA,EAASrT,KAAKC,GAAe,EAAVD,KAAKC,GAAU,GAAG,QAxBnE6C,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GA0B9BW,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAErBiV,EAtCA,CAuCTtQ,EAAQQ,OACVnE,EAAQiU,KAAOA,EACfA,EAAKxU,UAAU0D,UAAY,OAC3B5C,EAAS6C,cAAc6Q,GACvB7T,EAAUiD,QAAQC,gBAAgB2Q,EAAM,eAAgB,EAAG3T,EAAaiU,mCAAmC,IAC3GpU,EAAOqD,WAAWC,WAAWwQ,I,kCChE7B,IAAIlV,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwU,SAAM,EACd,IAAIrU,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBpD,EAAW,EAAQ,QACnBD,EAAe,EAAQ,QACvB+M,EAAW,EAAQ,QACnBmH,EAAO,SAAUhU,GAEjB,SAASgU,IACL,OAAkB,OAAXhU,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAsB/D,OAxBAD,EAAUyV,EAAKhU,GAIfgU,EAAI/U,UAAUkB,WAAa,SAAUiD,GACjC,IAAI6Q,EAAQlU,EAASiR,MAAMkD,SAAS1V,KAAKyV,SAAUE,EAAY3V,KAAK2V,YACpE/Q,EAAQ7B,YACR6B,EAAQC,IAAI,EAAG,EAAG7E,KAAK4V,cAAe,EAAGH,EAAOE,GAChD/Q,EAAQC,IAAI,EAAG,EAAG7E,KAAK6V,cAAeJ,EAAO,GAAIE,GACjD/Q,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5BwV,EAAI/U,UAAUsE,SAAW,WACrB,OAA4B,EAArB/E,KAAK4V,eAEhBJ,EAAI/U,UAAUuE,UAAY,WACtB,OAA4B,EAArBhF,KAAK4V,eAEhBJ,EAAI/U,UAAUwE,SAAW,SAAUrC,GAC/B5C,KAAK4V,YAAYhT,EAAQ,IAE7B4S,EAAI/U,UAAUyE,UAAY,SAAUjB,GAChCjE,KAAK4V,YAAY3R,EAAS,IAEvBuR,EAzBD,CA0BR7Q,EAAQQ,OACVnE,EAAQwU,IAAMA,EACdA,EAAI/U,UAAU2E,WAAY,EAC1BoQ,EAAI/U,UAAU0D,UAAY,MAC1BqR,EAAI/U,UAAU4E,oBAAsB,CAAC,cAAe,eACpDgJ,EAASjK,cAAcoR,GACvBpU,EAAUiD,QAAQC,gBAAgBkR,EAAK,cAAe,EAAGlU,EAAaiD,sBACtEnD,EAAUiD,QAAQC,gBAAgBkR,EAAK,cAAe,EAAGlU,EAAaiD,sBACtEnD,EAAUiD,QAAQC,gBAAgBkR,EAAK,QAAS,EAAGlU,EAAaiD,sBAChEnD,EAAUiD,QAAQC,gBAAgBkR,EAAK,aAAa,EAAOlU,EAAayT,uBACxE5T,EAAOqD,WAAWC,WAAW+Q,I,oCCzD7B,IAAIzV,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4H,UAAO,EACf,IAAIzH,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBpD,EAAW,EAAQ,QACnBqH,EAAQ,SAAUpH,GAElB,SAASoH,EAAKL,GACV,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KACzCwI,EAAMG,UAAY,GAClBH,EAAM+C,WAAa,EACnB/C,EAAMG,UAAYC,EAAKC,cAAcL,EAAMM,QAC3CN,EAAM+C,WAAa,EACnB,IAAK,IAAI7B,EAAI,EAAGA,EAAIlB,EAAMG,UAAUvG,SAAUsH,EAC1ClB,EAAM+C,YAAc/C,EAAMG,UAAUe,GAAG6B,WAS3C,OAPA/C,EAAMO,GAAG,oBAAoB,WACzB/I,KAAK2I,UAAYC,EAAKC,cAAc7I,KAAK8I,QACzC9I,KAAKuL,WAAa,EAClB,IAAK,IAAI7B,EAAI,EAAGA,EAAI1J,KAAK2I,UAAUvG,SAAUsH,EACzC1J,KAAKuL,YAAcvL,KAAK2I,UAAUe,GAAG6B,cAGtC/C,EAulBX,OAxmBAzI,EAAU6I,EAAMpH,GAmBhBoH,EAAKnI,UAAUkB,WAAa,SAAUiD,GAClC,IAAIkR,EAAK9V,KAAK2I,UACd/D,EAAQ7B,YAER,IADA,IAAIgT,GAAW,EACNvT,EAAI,EAAGA,EAAIsT,EAAG1T,OAAQI,IAAK,CAChC,IAAI4J,EAAI0J,EAAGtT,GAAG0J,QACV1L,EAAIsV,EAAGtT,GAAGR,OACd,OAAQoK,GACJ,IAAK,IACDxH,EAAQzB,OAAO3C,EAAE,GAAIA,EAAE,IACvB,MACJ,IAAK,IACDoE,EAAQ1B,OAAO1C,EAAE,GAAIA,EAAE,IACvB,MACJ,IAAK,IACDoE,EAAQoR,cAAcxV,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACtD,MACJ,IAAK,IACDoE,EAAQqR,iBAAiBzV,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC7C,MACJ,IAAK,IACD,IAAI0V,EAAK1V,EAAE,GAAI2V,EAAK3V,EAAE,GAAIwN,EAAKxN,EAAE,GAAI0N,EAAK1N,EAAE,GAAI4V,EAAQ5V,EAAE,GAAIuM,EAASvM,EAAE,GAAI6V,EAAM7V,EAAE,GAAI8V,EAAK9V,EAAE,GAC5F+V,EAAIvI,EAAKE,EAAKF,EAAKE,EACnBsI,EAASxI,EAAKE,EAAK,EAAIF,EAAKE,EAC5BuI,EAASzI,EAAKE,EAAKA,EAAKF,EAAK,EACjCpJ,EAAQ5B,UAAUkT,EAAIC,GACtBvR,EAAQ3B,OAAOoT,GACfzR,EAAQwJ,MAAMoI,EAAQC,GACtB7R,EAAQC,IAAI,EAAG,EAAG0R,EAAGH,EAAOA,EAAQrJ,EAAQ,EAAIuJ,GAChD1R,EAAQwJ,MAAM,EAAIoI,EAAQ,EAAIC,GAC9B7R,EAAQ3B,QAAQoT,GAChBzR,EAAQ5B,WAAWkT,GAAKC,GACxB,MACJ,IAAK,IACDJ,GAAW,EACXnR,EAAQxB,YACR,OAGP2S,GAAa/V,KAAK8F,UAInBlB,EAAQjB,gBAAgB3D,MAHxB4E,EAAQ8R,YAAY1W,OAM5B4I,EAAKnI,UAAUmD,YAAc,WACzB,IAAI5B,EAAS,GACbhC,KAAK2I,UAAUlB,SAAQ,SAAUqB,GAC7B,GAAqB,MAAjBA,EAAKoD,QAAiB,CACtB,IAAIY,EAAQhE,EAAK9G,OAAO,GACpB+K,EAASjE,EAAK9G,OAAO,GACrBgL,EAAMlE,EAAK9G,OAAO,GAAK+K,EACvB4J,EAAM7U,KAAKC,GAAK,IAIpB,GAHID,KAAK2K,IAAIK,EAAQE,GAAO2J,IACxBA,EAAM7U,KAAK2K,IAAIK,EAAQE,IAEvBD,EAAS,EACT,IAAK,IAAI6J,EAAI9J,EAAQ6J,EAAKC,EAAI5J,EAAK4J,GAAKD,EAAK,CACzC,IAAIjP,EAAQkB,EAAKqE,wBAAwBnE,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI4U,EAAG,GAC5G5U,EAAOkF,KAAKQ,EAAM3D,EAAG2D,EAAM1D,QAI/B,IAAS4S,EAAI9J,EAAQ6J,EAAKC,EAAI5J,EAAK4J,GAAKD,EAAK,CACrCjP,EAAQkB,EAAKqE,wBAAwBnE,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI4U,EAAG,GAC5G5U,EAAOkF,KAAKQ,EAAM3D,EAAG2D,EAAM1D,SAIlC,GAAqB,MAAjB8E,EAAKoD,QACV,IAAS0K,EAAI,EAAKA,GAAK,EAAGA,GAAK,IAAM,CAC7BlP,EAAQkB,EAAKsE,sBAAsB0J,EAAG9N,EAAKgE,MAAM/I,EAAG+E,EAAKgE,MAAM9I,EAAG8E,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,GAAI8G,EAAK9G,OAAO,IAClKA,EAAOkF,KAAKQ,EAAM3D,EAAG2D,EAAM1D,QAI/BhC,EAASA,EAAO6U,OAAO/N,EAAK9G,WAQpC,IALA,IAII+B,EAAGC,EAJHqD,EAAOrF,EAAO,GACdsF,EAAOtF,EAAO,GACduF,EAAOvF,EAAO,GACdwF,EAAOxF,EAAO,GAET0H,EAAI,EAAGA,EAAI1H,EAAOI,OAAS,EAAGsH,IACnC3F,EAAI/B,EAAW,EAAJ0H,GACX1F,EAAIhC,EAAW,EAAJ0H,EAAQ,GACdoN,MAAM/S,KACPsD,EAAOvF,KAAK6F,IAAIN,EAAMtD,GACtBuD,EAAOxF,KAAK8F,IAAIN,EAAMvD,IAErB+S,MAAM9S,KACPuD,EAAOzF,KAAK6F,IAAIJ,EAAMvD,GACtBwD,EAAO1F,KAAK8F,IAAIJ,EAAMxD,IAG9B,MAAO,CACHD,EAAGjC,KAAKiQ,MAAM1K,GACdrD,EAAGlC,KAAKiQ,MAAMxK,GACd3E,MAAOd,KAAKiQ,MAAMzK,EAAOD,GACzBpD,OAAQnC,KAAKiQ,MAAMvK,EAAOD,KAGlCqB,EAAKnI,UAAUsW,UAAY,WACvB,OAAO/W,KAAKuL,YAEhB3C,EAAKnI,UAAUuW,iBAAmB,SAAU5U,GACxC,IAAIsF,EAAOgC,EAAI,EAAGuN,EAAKjX,KAAK2I,UAAUvG,OACtC,IAAK6U,EACD,OAAO,KAEX,MAAOvN,EAAIuN,GAAM7U,EAASpC,KAAK2I,UAAUe,GAAG6B,WACxCnJ,GAAUpC,KAAK2I,UAAUe,GAAG6B,aAC1B7B,EAEN,GAAIA,IAAMuN,EAEN,OADAvP,EAAQ1H,KAAK2I,UAAUe,EAAI,GAAG1H,OAAOkS,OAAO,GACrC,CACHnQ,EAAG2D,EAAM,GACT1D,EAAG0D,EAAM,IAGjB,GAAItF,EAAS,IAET,OADAsF,EAAQ1H,KAAK2I,UAAUe,GAAG1H,OAAOkS,MAAM,EAAG,GACnC,CACHnQ,EAAG2D,EAAM,GACT1D,EAAG0D,EAAM,IAGjB,IAAIwP,EAAKlX,KAAK2I,UAAUe,GACpBlJ,EAAI0W,EAAGlV,OACX,OAAQkV,EAAGhL,SACP,IAAK,IACD,OAAOtD,EAAKiE,eAAezK,EAAQ8U,EAAGpK,MAAM/I,EAAGmT,EAAGpK,MAAM9I,EAAGxD,EAAE,GAAIA,EAAE,IACvE,IAAK,IACD,OAAOoI,EAAKsE,sBAAsB9K,EAAS8U,EAAG3L,WAAY2L,EAAGpK,MAAM/I,EAAGmT,EAAGpK,MAAM9I,EAAGxD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACtH,IAAK,IACD,OAAOoI,EAAKuE,0BAA0B/K,EAAS8U,EAAG3L,WAAY2L,EAAGpK,MAAM/I,EAAGmT,EAAGpK,MAAM9I,EAAGxD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC9G,IAAK,IACD,IAAI0V,EAAK1V,EAAE,GAAI2V,EAAK3V,EAAE,GAAIwN,EAAKxN,EAAE,GAAI0N,EAAK1N,EAAE,GAAI4V,EAAQ5V,EAAE,GAAIuM,EAASvM,EAAE,GAAI6V,EAAM7V,EAAE,GAErF,OADA4V,GAAUrJ,EAAS3K,EAAU8U,EAAG3L,WACzB3C,EAAKqE,wBAAwBiJ,EAAIC,EAAInI,EAAIE,EAAIkI,EAAOC,GAEnE,OAAO,MAEXzN,EAAKgE,cAAgB,SAAUuK,EAAIC,EAAIC,EAAIC,GACvC,OAAOxV,KAAKyV,MAAMF,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,KAE/DxO,EAAKiE,eAAiB,SAAU2K,EAAMC,EAAKC,EAAKC,EAAKC,EAAKC,EAAOC,QAC/CtL,IAAVqL,IACAA,EAAQJ,QAEEjL,IAAVsL,IACAA,EAAQJ,GAEZ,IAAIK,GAAKH,EAAMF,IAAQC,EAAMF,EAAM,MAC/BO,EAAMlW,KAAKyV,KAAMC,EAAOA,GAAS,EAAIO,EAAIA,IACzCJ,EAAMF,IACNO,IAAQ,GAEZ,IACIC,EADAC,EAAOH,EAAIC,EAEf,GAAIL,IAAQF,EACRQ,EAAK,CACDlU,EAAG8T,EACH7T,EAAG8T,EAAQI,QAGd,IAAKJ,EAAQJ,IAAQG,EAAQJ,EAAM,QAAgBM,EACpDE,EAAK,CACDlU,EAAG8T,EAAQG,EACXhU,EAAG8T,EAAQI,OAGd,CACD,IAAIC,EAAIC,EACJC,EAAMrY,KAAK4M,cAAc6K,EAAKC,EAAKC,EAAKC,GACxCU,GAAKT,EAAQJ,IAAQE,EAAMF,IAAQK,EAAQJ,IAAQE,EAAMF,GAC7DY,GAASD,EAAMA,EACfF,EAAKV,EAAMa,GAAKX,EAAMF,GACtBW,EAAKV,EAAMY,GAAKV,EAAMF,GACtB,IAAIa,EAAQvY,KAAK4M,cAAciL,EAAOC,EAAOK,EAAIC,GAC7CI,EAAO1W,KAAKyV,KAAKC,EAAOA,EAAOe,EAAQA,GAC3CP,EAAMlW,KAAKyV,KAAMiB,EAAOA,GAAS,EAAIT,EAAIA,IACrCJ,EAAMF,IACNO,IAAQ,GAEZE,EAAOH,EAAIC,EACXC,EAAK,CACDlU,EAAGoU,EAAKH,EACRhU,EAAGoU,EAAKF,GAGhB,OAAOD,GAEXrP,EAAKsE,sBAAwB,SAAUuL,EAAKhB,EAAKC,EAAKC,EAAKC,EAAKc,EAAKC,EAAKC,EAAKC,GAC3E,SAASC,EAAIlC,GACT,OAAOA,EAAIA,EAAIA,EAEnB,SAASmC,EAAInC,GACT,OAAO,EAAIA,EAAIA,GAAK,EAAIA,GAE5B,SAASoC,EAAIpC,GACT,OAAO,EAAIA,GAAK,EAAIA,IAAM,EAAIA,GAElC,SAASqC,EAAIrC,GACT,OAAQ,EAAIA,IAAM,EAAIA,IAAM,EAAIA,GAEpC,IAAI7S,EAAI6U,EAAME,EAAIL,GAAOC,EAAMK,EAAIN,GAAOd,EAAMqB,EAAIP,GAAOhB,EAAMwB,EAAIR,GACjEzU,EAAI6U,EAAMC,EAAIL,GAAOE,EAAMI,EAAIN,GAAOb,EAAMoB,EAAIP,GAAOf,EAAMuB,EAAIR,GACrE,MAAO,CACH1U,EAAGA,EACHC,EAAGA,IAGX4E,EAAKuE,0BAA4B,SAAUsL,EAAKhB,EAAKC,EAAKC,EAAKC,EAAKc,EAAKC,GACrE,SAASO,EAAItC,GACT,OAAOA,EAAIA,EAEf,SAASuC,EAAIvC,GACT,OAAO,EAAIA,GAAK,EAAIA,GAExB,SAASwC,EAAIxC,GACT,OAAQ,EAAIA,IAAM,EAAIA,GAE1B,IAAI7S,EAAI2U,EAAMQ,EAAIT,GAAOd,EAAMwB,EAAIV,GAAOhB,EAAM2B,EAAIX,GAChDzU,EAAI2U,EAAMO,EAAIT,GAAOb,EAAMuB,EAAIV,GAAOf,EAAM0B,EAAIX,GACpD,MAAO,CACH1U,EAAGA,EACHC,EAAGA,IAGX4E,EAAKqE,wBAA0B,SAAUiJ,EAAIC,EAAInI,EAAIE,EAAIkI,EAAOC,GAC5D,IAAIgD,EAASvX,KAAKsF,IAAIiP,GAAMiD,EAASxX,KAAKqF,IAAIkP,GAC1C4B,EAAK,CACLlU,EAAGiK,EAAKlM,KAAKsF,IAAIgP,GACjBpS,EAAGkK,EAAKpM,KAAKqF,IAAIiP,IAErB,MAAO,CACHrS,EAAGmS,GAAM+B,EAAGlU,EAAIsV,EAASpB,EAAGjU,EAAIsV,GAChCtV,EAAGmS,GAAM8B,EAAGlU,EAAIuV,EAASrB,EAAGjU,EAAIqV,KAGxCzQ,EAAKC,cAAgB,SAAUC,GAC3B,IAAKA,EACD,MAAO,GAEX,IAAIyQ,EAAKzQ,EACL0Q,EAAK,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJD,EAAKA,EAAGE,QAAQ,IAAIC,OAAO,IAAK,KAAM,KACtC,IAAK,IAAIlX,EAAI,EAAGA,EAAIgX,EAAGpX,OAAQI,IAC3B+W,EAAKA,EAAGE,QAAQ,IAAIC,OAAOF,EAAGhX,GAAI,KAAM,IAAMgX,EAAGhX,IAErD,IAMIsR,EANA6F,EAAMJ,EAAG3N,MAAM,KACfkK,EAAK,GACL8D,EAAS,GACTC,EAAM,EACNC,EAAM,EACNC,EAAK,sDAET,IAAKvX,EAAI,EAAGA,EAAImX,EAAIvX,OAAQI,IAAK,CAC7B,IAAI4P,EAAMuH,EAAInX,GACV4J,EAAIgG,EAAI4H,OAAO,GACnB5H,EAAMA,EAAI8B,MAAM,GAChB0F,EAAOxX,OAAS,EAChB,MAAQ0R,EAAQiG,EAAGE,KAAK7H,GACpBwH,EAAO1S,KAAK4M,EAAM,IAGtB,IADA,IAAItT,EAAI,GACCyL,EAAI,EAAGiO,EAAON,EAAOxX,OAAQ6J,EAAIiO,EAAMjO,IAAK,CACjD,IAAIkO,EAASC,WAAWR,EAAO3N,IAC1B6K,MAAMqD,GAIP3Z,EAAE0G,KAAK,GAHP1G,EAAE0G,KAAKiT,GAMf,MAAO3Z,EAAE4B,OAAS,EAAG,CACjB,GAAI0U,MAAMtW,EAAE,IACR,MAEJ,IAGI6Z,EAASC,EAAQC,EACjBvM,EAAIE,EAAImI,EAAKmE,EAAIlE,EAAIa,EAAIC,EAJzBqD,EAAM,KACNzY,EAAS,GACT0Y,EAASb,EAAKc,EAASb,EAG3B,OAAQ1N,GACJ,IAAK,IACDyN,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDD,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACR5Y,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACD,IAAIxX,EAAK9B,EAAEoa,QACPrY,EAAK/B,EAAEoa,QAIX,GAHAf,GAAOvX,EACPwX,GAAOvX,EACPkY,EAAM,IACF3E,EAAG1T,OAAS,GAAmC,MAA9B0T,EAAGA,EAAG1T,OAAS,GAAG8J,QACnC,IAAK,IAAI2O,EAAM/E,EAAG1T,OAAS,EAAGyY,GAAO,EAAGA,IACpC,GAAwB,MAApB/E,EAAG+E,GAAK3O,QAAiB,CACzB2N,EAAM/D,EAAG+E,GAAK7Y,OAAO,GAAKM,EAC1BwX,EAAMhE,EAAG+E,GAAK7Y,OAAO,GAAKO,EAC1B,MAIZP,EAAOkF,KAAK2S,EAAKC,GACjB1N,EAAI,IACJ,MACJ,IAAK,IACDyN,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACRH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB1N,EAAI,IACJ,MACJ,IAAK,IACDyN,GAAOrZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDD,EAAMrZ,EAAEoa,QACRH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDA,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDA,EAAMtZ,EAAEoa,QACRH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACD9X,EAAOkF,KAAK1G,EAAEoa,QAASpa,EAAEoa,QAASpa,EAAEoa,QAASpa,EAAEoa,SAC/Cf,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACR5Y,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACD9X,EAAOkF,KAAK2S,EAAMrZ,EAAEoa,QAASd,EAAMtZ,EAAEoa,QAASf,EAAMrZ,EAAEoa,QAASd,EAAMtZ,EAAEoa,SACvEf,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDQ,EAAST,EACTU,EAAST,EACTO,EAAUvE,EAAGA,EAAG1T,OAAS,GACD,MAApBiY,EAAQnO,UACRoO,EAAST,GAAOA,EAAMQ,EAAQrY,OAAO,IACrCuY,EAAST,GAAOA,EAAMO,EAAQrY,OAAO,KAEzCA,EAAOkF,KAAKoT,EAAQC,EAAQ/Z,EAAEoa,QAASpa,EAAEoa,SACzCf,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACRH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDQ,EAAST,EACTU,EAAST,EACTO,EAAUvE,EAAGA,EAAG1T,OAAS,GACD,MAApBiY,EAAQnO,UACRoO,EAAST,GAAOA,EAAMQ,EAAQrY,OAAO,IACrCuY,EAAST,GAAOA,EAAMO,EAAQrY,OAAO,KAEzCA,EAAOkF,KAAKoT,EAAQC,EAAQV,EAAMrZ,EAAEoa,QAASd,EAAMtZ,EAAEoa,SACrDf,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACD9X,EAAOkF,KAAK1G,EAAEoa,QAASpa,EAAEoa,SACzBf,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACR5Y,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACD9X,EAAOkF,KAAK2S,EAAMrZ,EAAEoa,QAASd,EAAMtZ,EAAEoa,SACrCf,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAK2S,EAAKC,GACjB,MACJ,IAAK,IACDQ,EAAST,EACTU,EAAST,EACTO,EAAUvE,EAAGA,EAAG1T,OAAS,GACD,MAApBiY,EAAQnO,UACRoO,EAAST,GAAOA,EAAMQ,EAAQrY,OAAO,IACrCuY,EAAST,GAAOA,EAAMO,EAAQrY,OAAO,KAEzC6X,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACRH,EAAM,IACNzY,EAAOkF,KAAKoT,EAAQC,EAAQV,EAAKC,GACjC,MACJ,IAAK,IACDQ,EAAST,EACTU,EAAST,EACTO,EAAUvE,EAAGA,EAAG1T,OAAS,GACD,MAApBiY,EAAQnO,UACRoO,EAAST,GAAOA,EAAMQ,EAAQrY,OAAO,IACrCuY,EAAST,GAAOA,EAAMO,EAAQrY,OAAO,KAEzC6X,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAOkF,KAAKoT,EAAQC,EAAQV,EAAKC,GACjC,MACJ,IAAK,IACD9L,EAAKxN,EAAEoa,QACP1M,EAAK1N,EAAEoa,QACPvE,EAAM7V,EAAEoa,QACRJ,EAAKha,EAAEoa,QACPtE,EAAK9V,EAAEoa,QACPzD,EAAK0C,EACLzC,EAAK0C,EACLD,EAAMrZ,EAAEoa,QACRd,EAAMtZ,EAAEoa,QACRH,EAAM,IACNzY,EAAShC,KAAK8a,wCAAwC3D,EAAIC,EAAIyC,EAAKC,EAAKU,EAAIlE,EAAItI,EAAIE,EAAImI,GACxF,MACJ,IAAK,IACDrI,EAAKxN,EAAEoa,QACP1M,EAAK1N,EAAEoa,QACPvE,EAAM7V,EAAEoa,QACRJ,EAAKha,EAAEoa,QACPtE,EAAK9V,EAAEoa,QACPzD,EAAK0C,EACLzC,EAAK0C,EACLD,GAAOrZ,EAAEoa,QACTd,GAAOtZ,EAAEoa,QACTH,EAAM,IACNzY,EAAShC,KAAK8a,wCAAwC3D,EAAIC,EAAIyC,EAAKC,EAAKU,EAAIlE,EAAItI,EAAIE,EAAImI,GACxF,MAERP,EAAG5O,KAAK,CACJgF,QAASuO,GAAOrO,EAChBpK,OAAQA,EACR8K,MAAO,CACH/I,EAAG2W,EACH1W,EAAG2W,GAEPpP,WAAYvL,KAAK+a,WAAWL,EAAQC,EAAQF,GAAOrO,EAAGpK,KAGpD,MAANoK,GAAmB,MAANA,GACb0J,EAAG5O,KAAK,CACJgF,QAAS,IACTlK,OAAQ,GACR8K,WAAON,EACPjB,WAAY,IAIxB,OAAOuK,GAEXlN,EAAKmS,WAAa,SAAUhX,EAAGC,EAAGyW,EAAKzY,GACnC,IAAIqW,EAAKpO,EAAI+Q,EAAIpE,EACbqE,EAAOrS,EACX,OAAQ6R,GACJ,IAAK,IACD,OAAOQ,EAAKrO,cAAc7I,EAAGC,EAAGhC,EAAO,GAAIA,EAAO,IACtD,IAAK,IAGD,IAFAqW,EAAM,EACNpO,EAAKgR,EAAK/N,sBAAsB,EAAGnJ,EAAGC,EAAGhC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAClG4U,EAAI,IAAMA,GAAK,EAAGA,GAAK,IACxBoE,EAAKC,EAAK/N,sBAAsB0J,EAAG7S,EAAGC,EAAGhC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IACvGqW,GAAO4C,EAAKrO,cAAc3C,EAAGlG,EAAGkG,EAAGjG,EAAGgX,EAAGjX,EAAGiX,EAAGhX,GAC/CiG,EAAK+Q,EAET,OAAO3C,EACX,IAAK,IAGD,IAFAA,EAAM,EACNpO,EAAKgR,EAAK9N,0BAA0B,EAAGpJ,EAAGC,EAAGhC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAChF4U,EAAI,IAAMA,GAAK,EAAGA,GAAK,IACxBoE,EAAKC,EAAK9N,0BAA0ByJ,EAAG7S,EAAGC,EAAGhC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IACrFqW,GAAO4C,EAAKrO,cAAc3C,EAAGlG,EAAGkG,EAAGjG,EAAGgX,EAAGjX,EAAGiX,EAAGhX,GAC/CiG,EAAK+Q,EAET,OAAO3C,EACX,IAAK,IACDA,EAAM,EACN,IAAIvL,EAAQ9K,EAAO,GACf+K,EAAS/K,EAAO,GAChBgL,EAAMhL,EAAO,GAAK+K,EAClB4J,EAAM7U,KAAKC,GAAK,IAKpB,GAJID,KAAK2K,IAAIK,EAAQE,GAAO2J,IACxBA,EAAM7U,KAAK2K,IAAIK,EAAQE,IAE3B/C,EAAKgR,EAAKhO,wBAAwBjL,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAI8K,EAAO,GACjFC,EAAS,EACT,IAAK6J,EAAI9J,EAAQ6J,EAAKC,EAAI5J,EAAK4J,GAAKD,EAChCqE,EAAKC,EAAKhO,wBAAwBjL,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAI4U,EAAG,GACjFyB,GAAO4C,EAAKrO,cAAc3C,EAAGlG,EAAGkG,EAAGjG,EAAGgX,EAAGjX,EAAGiX,EAAGhX,GAC/CiG,EAAK+Q,OAIT,IAAKpE,EAAI9J,EAAQ6J,EAAKC,EAAI5J,EAAK4J,GAAKD,EAChCqE,EAAKC,EAAKhO,wBAAwBjL,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAI4U,EAAG,GACjFyB,GAAO4C,EAAKrO,cAAc3C,EAAGlG,EAAGkG,EAAGjG,EAAGgX,EAAGjX,EAAGiX,EAAGhX,GAC/CiG,EAAK+Q,EAKb,OAFAA,EAAKC,EAAKhO,wBAAwBjL,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIgL,EAAK,GACnFqL,GAAO4C,EAAKrO,cAAc3C,EAAGlG,EAAGkG,EAAGjG,EAAGgX,EAAGjX,EAAGiX,EAAGhX,GACxCqU,EAEf,OAAO,GAEXzP,EAAKkS,wCAA0C,SAAU3D,EAAIC,EAAIC,EAAIC,EAAIkD,EAAIlE,EAAItI,EAAIE,EAAIgN,GACrF,IAAI7E,EAAM6E,GAAUpZ,KAAKC,GAAK,KAC1BoZ,EAAMrZ,KAAKsF,IAAIiP,IAAQc,EAAKE,GAAO,EAAOvV,KAAKqF,IAAIkP,IAAQe,EAAKE,GAAO,EACvE8D,GAAO,EAAItZ,KAAKqF,IAAIkP,IAAQc,EAAKE,GAAO,EACvCvV,KAAKsF,IAAIiP,IAAQe,EAAKE,GAAO,EAC9B+D,EAAUF,EAAKA,GAAOnN,EAAKA,GAAOoN,EAAKA,GAAOlN,EAAKA,GACnDmN,EAAS,IACTrN,GAAMlM,KAAKyV,KAAK8D,GAChBnN,GAAMpM,KAAKyV,KAAK8D,IAEpB,IAAIC,EAAIxZ,KAAKyV,MAAMvJ,EAAKA,GAAME,EAAKA,GAAMF,EAAKA,GAAMoN,EAAKA,GAAMlN,EAAKA,GAAMiN,EAAKA,KAC1EnN,EAAKA,GAAMoN,EAAKA,GAAMlN,EAAKA,GAAMiN,EAAKA,KACvCX,IAAOlE,IACPgF,IAAM,GAENxE,MAAMwE,KACNA,EAAI,GAER,IAAIC,EAAOD,EAAItN,EAAKoN,EAAMlN,EACtBsN,EAAOF,GAAKpN,EAAKiN,EAAMnN,EACvBkI,GAAMiB,EAAKE,GAAM,EAAMvV,KAAKsF,IAAIiP,GAAOkF,EAAMzZ,KAAKqF,IAAIkP,GAAOmF,EAC7DrF,GAAMiB,EAAKE,GAAM,EAAMxV,KAAKqF,IAAIkP,GAAOkF,EAAMzZ,KAAKsF,IAAIiP,GAAOmF,EAC7DC,EAAO,SAAUC,GACjB,OAAO5Z,KAAKyV,KAAKmE,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KAExCC,EAAS,SAAUrD,EAAGoD,GACtB,OAAQpD,EAAE,GAAKoD,EAAE,GAAKpD,EAAE,GAAKoD,EAAE,KAAOD,EAAKnD,GAAKmD,EAAKC,KAErDE,EAAS,SAAUtD,EAAGoD,GACtB,OAAQpD,EAAE,GAAKoD,EAAE,GAAKpD,EAAE,GAAKoD,EAAE,IAAM,EAAI,GAAK5Z,KAAK+Z,KAAKF,EAAOrD,EAAGoD,KAElEtF,EAAQwF,EAAO,CAAC,EAAG,GAAI,EAAET,EAAKI,GAAOvN,GAAKoN,EAAKI,GAAOtN,IACtDoK,EAAI,EAAE6C,EAAKI,GAAOvN,GAAKoN,EAAKI,GAAOtN,GACnCwN,EAAI,GAAG,EAAIP,EAAKI,GAAOvN,IAAM,EAAIoN,EAAKI,GAAOtN,GAC7CnB,EAAS6O,EAAOtD,EAAGoD,GAavB,OAZIC,EAAOrD,EAAGoD,KAAO,IACjB3O,EAASjL,KAAKC,IAEd4Z,EAAOrD,EAAGoD,IAAM,IAChB3O,EAAS,GAEF,IAAPuJ,GAAYvJ,EAAS,IACrBA,GAAkB,EAAIjL,KAAKC,IAEpB,IAAPuU,GAAYvJ,EAAS,IACrBA,GAAkB,EAAIjL,KAAKC,IAExB,CAACmU,EAAIC,EAAInI,EAAIE,EAAIkI,EAAOrJ,EAAQsJ,EAAKC,IAEzC1N,EAzmBA,CA0mBTjE,EAAQQ,OACVnE,EAAQ4H,KAAOA,EACfA,EAAKnI,UAAU0D,UAAY,OAC3ByE,EAAKnI,UAAU4E,oBAAsB,CAAC,QACtC9D,EAAS6C,cAAcwE,GACvBxH,EAAUiD,QAAQC,gBAAgBsE,EAAM,QACxCzH,EAAOqD,WAAWC,WAAWmE,I,oCCnoB7B,IAAI7I,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8a,WAAQ,EAChB,IAAI3a,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBpD,EAAW,EAAQ,QACnBD,EAAe,EAAQ,QACvB+M,EAAW,EAAQ,QACnByN,EAAS,SAAUta,GAEnB,SAASsa,IACL,OAAkB,OAAXta,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAqB/D,OAvBAD,EAAU+b,EAAOta,GAIjBsa,EAAMrb,UAAUkB,WAAa,SAAUiD,GACnCA,EAAQ7B,YACR6B,EAAQC,IAAI,EAAG,EAAG7E,KAAK8E,SAAU,EAAGvD,EAASiR,MAAMkD,SAAS1V,KAAKyV,SAAUzV,KAAK2V,aAChF/Q,EAAQzB,OAAO,EAAG,GAClByB,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5B8b,EAAMrb,UAAUsE,SAAW,WACvB,OAAuB,EAAhB/E,KAAK8E,UAEhBgX,EAAMrb,UAAUuE,UAAY,WACxB,OAAuB,EAAhBhF,KAAK8E,UAEhBgX,EAAMrb,UAAUwE,SAAW,SAAUrC,GACjC5C,KAAK8E,OAAOlC,EAAQ,IAExBkZ,EAAMrb,UAAUyE,UAAY,SAAUjB,GAClCjE,KAAK8E,OAAOb,EAAS,IAElB6X,EAxBC,CAyBVnX,EAAQQ,OACVnE,EAAQ8a,MAAQA,EAChBA,EAAMrb,UAAU0D,UAAY,QAC5B2X,EAAMrb,UAAU2E,WAAY,EAC5B0W,EAAMrb,UAAU4E,oBAAsB,CAAC,UACvCgJ,EAASjK,cAAc0X,GACvB1a,EAAUiD,QAAQC,gBAAgBwX,EAAO,SAAU,EAAGxa,EAAaiD,sBACnEnD,EAAUiD,QAAQC,gBAAgBwX,EAAO,QAAS,EAAGxa,EAAaiD,sBAClEnD,EAAUiD,QAAQC,gBAAgBwX,EAAO,aAAa,GACtD1a,EAAUiD,QAAQ0X,WAAWD,EAAO,CAChCE,SAAU,QACVC,YAAa,WACbC,YAAa,aAEjB/a,EAAOqD,WAAWC,WAAWqX,I,kCC5D7B,IAAI/b,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmb,YAAS,EACjB,IAAIhb,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClByX,EAAc,EAAQ,QACtB9a,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnB4a,EAAU,SAAU3a,GAEpB,SAAS2a,EAAO5T,GACZ,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KAoBzC,OAnBAwI,EAAM6T,UAAW,EACjB7T,EAAM8T,KAAO,IAAIF,EAAYG,WAAU,WACnC,IAAIC,EAAUhU,EAAM6T,SAEpB,OADA7T,EAAM6T,UAAW,EACVG,KAEXhU,EAAMO,GAAG,yBAAyB,WAC9B/I,KAAKyc,WAAW,MAEpBjU,EAAMO,GAAG,0BAA0B,WAC/B/I,KAAKqc,UAAW,KAEpB7T,EAAMO,GAAG,yBAAyB,WACzB/I,KAAKsc,KAAKI,cAGfC,cAAc3c,KAAK4c,UACnB5c,KAAK6c,mBAEFrU,EAoEX,OA1FAzI,EAAUoc,EAAQ3a,GAwBlB2a,EAAO1b,UAAUkB,WAAa,SAAUiD,GACpC,IAAI0X,EAAOtc,KAAK8c,YAAaC,EAAQ/c,KAAKyc,aAAcO,EAAc,EAARD,EAAWE,EAAMjd,KAAKkd,aAAaZ,GAAOa,EAAUnd,KAAKod,eAAgBrZ,EAAIkZ,EAAID,EAAM,GAAIhZ,EAAIiZ,EAAID,EAAM,GAAIpa,EAAQqa,EAAID,EAAM,GAAI/Y,EAASgZ,EAAID,EAAM,GAAIvX,EAAQzF,KAAKyF,QAOrO,IANIzF,KAAK8F,WAAa9F,KAAK+F,eACvBnB,EAAQ7B,YACR6B,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GAC1BW,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAExByF,EACA,GAAI0X,EAAS,CACT,IAAIrZ,EAASqZ,EAAQb,GAAOe,EAAc,EAARN,EAClCnY,EAAQqB,UAAUR,EAAO1B,EAAGC,EAAGpB,EAAOqB,EAAQH,EAAOuZ,EAAM,GAAIvZ,EAAOuZ,EAAM,GAAIza,EAAOqB,QAGvFW,EAAQqB,UAAUR,EAAO1B,EAAGC,EAAGpB,EAAOqB,EAAQ,EAAG,EAAGrB,EAAOqB,IAIvEkY,EAAO1b,UAAUyF,SAAW,SAAUtB,GAClC,IAAI0X,EAAOtc,KAAK8c,YAAaC,EAAQ/c,KAAKyc,aAAcO,EAAc,EAARD,EAAWE,EAAMjd,KAAKkd,aAAaZ,GAAOa,EAAUnd,KAAKod,eAAgBxa,EAAQqa,EAAID,EAAM,GAAI/Y,EAASgZ,EAAID,EAAM,GAEhL,GADApY,EAAQ7B,YACJoa,EAAS,CACT,IAAIrZ,EAASqZ,EAAQb,GACjBe,EAAc,EAARN,EACVnY,EAAQoB,KAAKlC,EAAOuZ,EAAM,GAAIvZ,EAAOuZ,EAAM,GAAIza,EAAOqB,QAGtDW,EAAQoB,KAAK,EAAG,EAAGpD,EAAOqB,GAE9BW,EAAQxB,YACRwB,EAAQ0Y,UAAUtd,OAEtBmc,EAAO1b,UAAU8E,iBAAmB,WAChC,OAAO/D,EAAOf,UAAU8E,iBAAiB5E,KAAKX,MAAM,IAExDmc,EAAO1b,UAAUoc,aAAe,WAC5B,IAAI7R,EAAOhL,KACXA,KAAK4c,SAAWW,aAAY,WACxBvS,EAAKwS,iBACN,IAAOxd,KAAKyd,cAEnBtB,EAAO1b,UAAUqM,MAAQ,WACrB,IAAI9M,KAAK0c,YAAT,CAGA,IAAIgB,EAAQ1d,KAAK2d,WACjB3d,KAAKsc,KAAKsB,UAAUF,GACpB1d,KAAK6c,eACL7c,KAAKsc,KAAKxP,UAEdqP,EAAO1b,UAAUod,KAAO,WACpB7d,KAAKsc,KAAKuB,OACVlB,cAAc3c,KAAK4c,WAEvBT,EAAO1b,UAAUic,UAAY,WACzB,OAAO1c,KAAKsc,KAAKI,aAErBP,EAAO1b,UAAU+c,aAAe,WAC5B,IAAIT,EAAQ/c,KAAKyc,aAAcK,EAAY9c,KAAK8c,YAAaI,EAAald,KAAKkd,aAAcZ,EAAOY,EAAWJ,GAAYzE,EAAMiE,EAAKla,OAAS,EAC3I2a,EAAQ1E,EAAM,EACdrY,KAAKyc,WAAWM,EAAQ,GAGxB/c,KAAKyc,WAAW,IAGjBN,EA3FE,CA4FXxX,EAAQQ,OACVnE,EAAQmb,OAASA,EACjBA,EAAO1b,UAAU0D,UAAY,SAC7B5C,EAAS6C,cAAc+X,GACvB/a,EAAUiD,QAAQC,gBAAgB6X,EAAQ,aAC1C/a,EAAUiD,QAAQC,gBAAgB6X,EAAQ,cAC1C/a,EAAUiD,QAAQC,gBAAgB6X,EAAQ,gBAC1C/a,EAAUiD,QAAQC,gBAAgB6X,EAAQ,SAC1C/a,EAAUiD,QAAQC,gBAAgB6X,EAAQ,aAAc,EAAG7a,EAAaiD,sBACxEnD,EAAUiD,QAAQC,gBAAgB6X,EAAQ,YAAa,GAAI7a,EAAaiD,sBACxEnD,EAAUiD,QAAQ0X,WAAWI,EAAQ,CACjCY,MAAO,aACPe,SAAU,gBACVC,SAAU,kBAEd5c,EAAOqD,WAAWC,WAAW0X,I,kCChI7B,IAAIpc,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgd,UAAO,EACf,IAAI7c,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnB0c,EAAiB,EAAVnc,KAAKC,GACZic,EAAQ,SAAUxc,GAElB,SAASwc,IACL,OAAkB,OAAXxc,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAsB/D,OAxBAD,EAAUie,EAAMxc,GAIhBwc,EAAKvd,UAAUkB,WAAa,SAAUiD,GAClCA,EAAQ7B,YACR6B,EAAQC,IAAI,EAAG,EAAG7E,KAAK6V,cAAe,EAAGoI,GAAM,GAC/CrZ,EAAQ1B,OAAOlD,KAAK4V,cAAe,GACnChR,EAAQC,IAAI,EAAG,EAAG7E,KAAK4V,cAAeqI,EAAM,GAAG,GAC/CrZ,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5Bge,EAAKvd,UAAUsE,SAAW,WACtB,OAA4B,EAArB/E,KAAK4V,eAEhBoI,EAAKvd,UAAUuE,UAAY,WACvB,OAA4B,EAArBhF,KAAK4V,eAEhBoI,EAAKvd,UAAUwE,SAAW,SAAUrC,GAChC5C,KAAK4V,YAAYhT,EAAQ,IAE7Bob,EAAKvd,UAAUyE,UAAY,SAAUjB,GACjCjE,KAAK4V,YAAY3R,EAAS,IAEvB+Z,EAzBA,CA0BTrZ,EAAQQ,OACVnE,EAAQgd,KAAOA,EACfA,EAAKvd,UAAU0D,UAAY,OAC3B6Z,EAAKvd,UAAU2E,WAAY,EAC3B4Y,EAAKvd,UAAU4E,oBAAsB,CAAC,cAAe,eACrD9D,EAAS6C,cAAc4Z,GACvB5c,EAAUiD,QAAQC,gBAAgB0Z,EAAM,cAAe,EAAG1c,EAAaiD,sBACvEnD,EAAUiD,QAAQC,gBAAgB0Z,EAAM,cAAe,EAAG1c,EAAaiD,sBACvEpD,EAAOqD,WAAWC,WAAWuZ,I,kCCvD7B,IAAIje,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAaxCsd,EAAYle,MAAQA,KAAKke,UAAa,WAStC,OARAA,EAAW9d,OAAO+d,QAAU,SAASvH,GACjC,IAAK,IAAIwH,EAAG1U,EAAI,EAAGlH,EAAId,UAAUU,OAAQsH,EAAIlH,EAAGkH,IAE5C,IAAK,IAAIlJ,KADT4d,EAAI1c,UAAUgI,GACA0U,EAAOhe,OAAOK,UAAUC,eAAeC,KAAKyd,EAAG5d,KACzDoW,EAAEpW,GAAK4d,EAAE5d,IAEjB,OAAOoW,GAEJsH,EAASzc,MAAMzB,KAAM0B,YAEhCtB,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqd,iBAAc,EACtB,IAAIld,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBkd,EAAS,EAAQ,QACjB3Z,EAAU,EAAQ,QAClB4Z,EAAS,EAAQ,QACjBC,EAAU,EAAQ,QAClBjd,EAAW,EAAQ,QACnBD,EAAe,EAAQ,QACvB+M,EAAW,EAAQ,QACnBoQ,EAAc,WACd7O,EAAmB,CACnB,sBACA,2BACA,sBACA,uBACA,mBACA,sBACA,qBACA,0BACA,mBACA,qBACA,0BACA,mBACA,2BACA,sBAECI,KAAI,SAAUxC,GAAK,OAAOA,EAAK,IAAMiR,KACrCnO,KAAK,KACNoO,EAAa,YACbC,EAAuB,CACvB,cACA,eACA,eACA,eACA,cACA,cACA,iBACA,gBACA,gBACA,0BACA,qBAEC3O,KAAI,SAAUxC,GAAK,OAAOA,EAAK,IAAMiR,KACrCnO,KAAK,KACNsO,EAAS,CACT,YAAa,GACb,aAAc,EACd,YAAa,GACb,gBAAiB,GACjB,cAAe,GACf,eAAgB,IAChB,gBAAiB,IACjB,eAAgB,KAEhBC,EAAe,iBAAkBtd,EAASiR,MAAMsM,QACpD,SAASC,EAAUC,EAAYC,GAC3B,GAAmB,YAAfD,EACA,MAAO,YAEXC,GAAO9d,EAAOsF,KAAKyY,UAAUN,EAAOI,IAAe,GACnD,IAAIvJ,GAAUtU,EAAOsF,KAAK0Y,UAAUF,GAAO,IAAO,KAAO,IACzD,OAAI9d,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,MAAQtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,EAAG,MACxE,YAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,KAAW,MACrC,cAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,KAAW,OACrC,YAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,OACtC,cAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,OACtC,YAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,OACtC,cAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,OACtC,YAEFtU,EAAOsF,KAAK2Y,SAAS3J,EAAO,MAAY,OACtC,eAGPtU,EAAOsF,KAAK4Y,MAAM,uDAAyD5J,GACpE,WAGf,IAAI6J,EAAgB,CAChB,WACA,aACA,YACA,eACA,cACA,cACA,gBACA,gBAEAC,EAAmB,IACvB,SAASC,EAAUC,GACf,MAAO,CACH1b,EAAG0b,EAAM1b,EACJ0b,EAAM7c,MAAQ,EAAKd,KAAKsF,IAAIqY,EAAM7V,UAClC6V,EAAMxb,OAAS,EAAKnC,KAAKqF,KAAKsY,EAAM7V,UACzC5F,EAAGyb,EAAMzb,EACJyb,EAAMxb,OAAS,EAAKnC,KAAKsF,IAAIqY,EAAM7V,UACnC6V,EAAM7c,MAAQ,EAAKd,KAAKqF,IAAIsY,EAAM7V,WAG/C,SAAS8V,EAAkBD,EAAOE,EAAUjY,GACxC,IAAI3D,EAAI2D,EAAM3D,GACT0b,EAAM1b,EAAI2D,EAAM3D,GAAKjC,KAAKsF,IAAIuY,IAC9BF,EAAMzb,EAAI0D,EAAM1D,GAAKlC,KAAKqF,IAAIwY,GAC/B3b,EAAI0D,EAAM1D,GACTyb,EAAM1b,EAAI2D,EAAM3D,GAAKjC,KAAKqF,IAAIwY,IAC9BF,EAAMzb,EAAI0D,EAAM1D,GAAKlC,KAAKsF,IAAIuY,GACnC,OAAOzB,EAASA,EAAS,GAAIuB,GAAQ,CAAE7V,SAAU6V,EAAM7V,SAAW+V,EAAU5b,EAAGA,EAC3EC,EAAGA,IAEX,SAAS4b,EAAmBH,EAAOI,GAC/B,IAAIC,EAASN,EAAUC,GACvB,OAAOC,EAAkBD,EAAOI,EAAUC,GAE9C,SAASC,EAAQC,EAAOC,EAAgBC,GAEpC,IADA,IAAIC,EAAUF,EACLvW,EAAI,EAAGA,EAAIsW,EAAM5d,OAAQsH,IAAK,CACnC,IAAI+L,EAAQlU,EAASiR,MAAMkD,SAASsK,EAAMtW,IACtC0W,EAAUte,KAAK2K,IAAIgJ,EAAQwK,IAA6B,EAAVne,KAAKC,IACnDse,EAAMve,KAAK6F,IAAIyY,EAAmB,EAAVte,KAAKC,GAASqe,GACtCC,EAAMH,IACNC,EAAU1K,GAGlB,OAAO0K,EAEX,IAAI9B,EAAe,SAAU7c,GAEzB,SAAS6c,EAAY9V,GACjB,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KAUzC,OATAwI,EAAM8X,eAAgB,EACtB9X,EAAM+X,kBACN/X,EAAMgY,iBAAmBhY,EAAMgY,iBAAiBC,KAAKjY,GACrDA,EAAMkY,eAAiBlY,EAAMkY,eAAeD,KAAKjY,GACjDA,EAAMmY,OAASnY,EAAMmY,OAAOF,KAAKjY,GACjCA,EAAMO,GAAG6G,EAAkBpH,EAAMmY,QAC7BnY,EAAMoY,WACNpY,EAAMmY,SAEHnY,EA2uBX,OAvvBAzI,EAAUse,EAAa7c,GAcvB6c,EAAY5d,UAAUogB,SAAW,SAAUC,GAEvC,OADA9gB,KAAK+gB,QAAQD,GACN9gB,MAEXqe,EAAY5d,UAAUsgB,QAAU,SAAUD,GAEtC,OADA3f,EAAOsF,KAAKwC,KAAK,6HACVjJ,KAAKghB,SAAS,CAACF,KAE1BzC,EAAY5d,UAAUmgB,QAAU,WAC5B,OAAO5gB,KAAKihB,QAAUjhB,KAAKihB,OAAO,IAEtC5C,EAAY5d,UAAUugB,SAAW,SAAUE,GACvC,IAAI1Y,EAAQxI,UACE,IAAVkhB,IAAoBA,EAAQ,IAC5BlhB,KAAKihB,QAAUjhB,KAAKihB,OAAO7e,QAC3BpC,KAAKmhB,SAETnhB,KAAKihB,OAASC,EACO,IAAjBA,EAAM9e,OACNpC,KAAK4J,SAASsX,EAAM,GAAGE,uBAGvBphB,KAAK4J,SAAS,GAElB5J,KAAKihB,OAAOxZ,SAAQ,SAAUqZ,GAC1B,IAAIO,EAAmBP,EAAKzb,oBACvB2K,KAAI,SAAUsR,GAAQ,OAAOA,EAAO,UAAY7C,KAChDnO,KAAK,KACNiR,EAAW,WACkB,IAAzB/Y,EAAM0Y,QAAQ9e,QACdoG,EAAMoB,SAASpB,EAAM0Y,QAAQ,GAAGE,uBAEpC5Y,EAAMgZ,uBACDhZ,EAAM8X,eAAkB9X,EAAMiZ,cAC/BjZ,EAAMmY,UAGdG,EAAK/X,GAAGsY,EAAkBE,GAC1BT,EAAK/X,GAAG4V,EAAsB4C,GAC9BT,EAAK/X,GAAG,wBAA0B0V,EAAa8C,GAC/CT,EAAK/X,GAAG,WAAa0V,EAAc,YAAcA,EAAa8C,GAC9D/Y,EAAMkZ,WAAWZ,MAErB9gB,KAAKwhB,uBACL,IAAIG,IAAoB3hB,KAAK4hB,QAAQ,aAIrC,OAHID,GACA3hB,KAAK2gB,SAEF3gB,MAEXqe,EAAY5d,UAAUihB,WAAa,SAAUZ,GACzC,IACIe,EADArZ,EAAQxI,KAEZ8gB,EAAK/X,GAAG,aAAe0V,GAAa,SAAUjR,GAC1CqU,EAAUf,EAAKgB,sBACVtZ,EAAMiZ,cAAgBX,IAAStY,EAAMoZ,QAAQ,UAC9CpZ,EAAMuZ,UAAUvU,GAAG,MAG3BsT,EAAK/X,GAAG,YAAc0V,GAAa,SAAUjR,GACzC,GAAKqU,EAAL,CAGA,IAAIpV,EAAMqU,EAAKgB,sBACXxf,EAAKmK,EAAI1I,EAAI8d,EAAQ9d,EACrBxB,EAAKkK,EAAIzI,EAAI6d,EAAQ7d,EACzBwE,EAAM0Y,QAAQzZ,SAAQ,SAAUua,GAC5B,GAAIA,IAAclB,IAGdkB,EAAUP,aAAd,CAGA,IAAIQ,EAAWD,EAAUF,sBACzBE,EAAUE,oBAAoB,CAC1Bne,EAAGke,EAASle,EAAIzB,EAChB0B,EAAGie,EAASje,EAAIzB,IAEpByf,EAAUD,UAAUvU,OAExBqU,EAAU,UAGlBxD,EAAY5d,UAAU0hB,SAAW,WAC7B,OAAOniB,KAAKihB,QAAU,IAE1B5C,EAAY5d,UAAU2hB,gBAAkB,WACpC,OAAOpiB,KAAKqiB,mBAEhBhE,EAAY5d,UAAU0gB,OAAS,WACvBnhB,KAAKihB,QACLjhB,KAAKihB,OAAOxZ,SAAQ,SAAUqZ,GAC1BA,EAAKwB,IAAI,IAAM7D,MAGvBze,KAAKihB,OAAS,GACdjhB,KAAKwhB,wBAETnD,EAAY5d,UAAU+gB,qBAAuB,WACzCxhB,KAAKuiB,YAAY7D,GACjB1e,KAAKuiB,YAAY,aACjBviB,KAAKwiB,6BAA6B,sBAEtCnE,EAAY5d,UAAUgiB,aAAe,WACjC,OAAOziB,KAAK0iB,UAAUhE,EAAY1e,KAAK2iB,gBAE3CtE,EAAY5d,UAAUmiB,eAAiB,SAAU9B,EAAM+B,EAAKC,QAC5C,IAARD,IAAkBA,EAAM7iB,KAAK4J,YACjC,IAAI5D,EAAO8a,EAAKiC,cAAc,CAC1BC,eAAe,EACfC,YAAY,EACZC,WAAYljB,KAAKmjB,iBAEjBC,EAAWtC,EAAKuC,iBAAiBP,GACjCQ,EAASxC,EAAKgB,oBAAoBgB,GAClCxgB,EAAK0D,EAAKjC,EAAIqf,EAASrf,EAAI+c,EAAKyC,UAAYH,EAASrf,EACrDxB,EAAKyD,EAAKhC,EAAIof,EAASpf,EAAI8c,EAAK0C,UAAYJ,EAASpf,EACrD4F,GAAYrI,EAASiR,MAAMkD,SAASoL,EAAKM,uBAAmC,EAAVtf,KAAKC,KAC5D,EAAVD,KAAKC,IACN0hB,EAAM,CACN1f,EAAGuf,EAAOvf,EAAIzB,EAAKR,KAAKsF,IAAIwC,GAAYrH,EAAKT,KAAKqF,KAAKyC,GACvD5F,EAAGsf,EAAOtf,EAAIzB,EAAKT,KAAKsF,IAAIwC,GAAYtH,EAAKR,KAAKqF,IAAIyC,GACtDhH,MAAOoD,EAAKpD,MAAQwgB,EAASrf,EAC7BE,OAAQ+B,EAAK/B,OAASmf,EAASpf,EAC/B4F,SAAUA,GAEd,OAAO8V,EAAkB+D,GAAMliB,EAASiR,MAAMkD,SAASmN,GAAM,CACzD9e,EAAG,EACHC,EAAG,KAGXqa,EAAY5d,UAAUkiB,cAAgB,WAClC,IAAIna,EAAQxI,KACR8gB,EAAO9gB,KAAK4gB,UAChB,IAAKE,EACD,MAAO,CACH/c,GAAIwb,EACJvb,GAAIub,EACJ3c,MAAO,EACPqB,OAAQ,EACR2F,SAAU,GAGlB,IAAI8Z,EAAc,GAClB1jB,KAAKkhB,QAAQlR,KAAI,SAAU8Q,GACvB,IAAI2C,EAAM3C,EAAKiC,cAAc,CACzBC,eAAe,EACfC,YAAY,EACZC,WAAY1a,EAAM2a,iBAElBnhB,EAAS,CACT,CAAE+B,EAAG0f,EAAI1f,EAAGC,EAAGyf,EAAIzf,GACnB,CAAED,EAAG0f,EAAI1f,EAAI0f,EAAI7gB,MAAOoB,EAAGyf,EAAIzf,GAC/B,CAAED,EAAG0f,EAAI1f,EAAI0f,EAAI7gB,MAAOoB,EAAGyf,EAAIzf,EAAIyf,EAAIxf,QACvC,CAAEF,EAAG0f,EAAI1f,EAAGC,EAAGyf,EAAIzf,EAAIyf,EAAIxf,SAE3B0f,EAAQ7C,EAAK8C,uBACjB5hB,EAAOyF,SAAQ,SAAUC,GACrB,IAAImc,EAAcF,EAAMjc,MAAMA,GAC9Bgc,EAAYxc,KAAK2c,SAGzB,IAEIxc,EAAME,EAAMD,EAAME,EAFlBsc,EAAK,IAAI3iB,EAAO4iB,UACpBD,EAAG7gB,QAAQ1B,EAASiR,MAAMkD,SAAS1V,KAAK4J,aAExC8Z,EAAYjc,SAAQ,SAAUC,GAC1B,IAAImc,EAAcC,EAAGpc,MAAMA,QACd8E,IAATnF,IACAA,EAAOC,EAAOuc,EAAY9f,EAC1BwD,EAAOC,EAAOqc,EAAY7f,GAE9BqD,EAAOvF,KAAK6F,IAAIN,EAAMwc,EAAY9f,GAClCwD,EAAOzF,KAAK6F,IAAIJ,EAAMsc,EAAY7f,GAClCsD,EAAOxF,KAAK8F,IAAIN,EAAMuc,EAAY9f,GAClCyD,EAAO1F,KAAK8F,IAAIJ,EAAMqc,EAAY7f,MAEtC8f,EAAGE,SACH,IAAIxjB,EAAIsjB,EAAGpc,MAAM,CAAE3D,EAAGsD,EAAMrD,EAAGuD,IAC/B,MAAO,CACHxD,EAAGvD,EAAEuD,EACLC,EAAGxD,EAAEwD,EACLpB,MAAO0E,EAAOD,EACdpD,OAAQuD,EAAOD,EACfqC,SAAUrI,EAASiR,MAAMkD,SAAS1V,KAAK4J,cAG/CyU,EAAY5d,UAAUwjB,KAAO,WACzB,OAAOjkB,KAAKyiB,eAAe1e,GAE/Bsa,EAAY5d,UAAUyjB,KAAO,WACzB,OAAOlkB,KAAKyiB,eAAeze,GAE/Bqa,EAAY5d,UAAUsE,SAAW,WAC7B,OAAO/E,KAAKyiB,eAAe7f,OAE/Byb,EAAY5d,UAAUuE,UAAY,WAC9B,OAAOhF,KAAKyiB,eAAexe,QAE/Boa,EAAY5d,UAAU8f,gBAAkB,WACpCvgB,KAAKmkB,cACL7E,EAAc7X,QAAQ,SAAU2c,GAC5BpkB,KAAKqkB,cAAcD,IACrB3D,KAAKzgB,OACPA,KAAKqkB,cAAc,YAEvBhG,EAAY5d,UAAU4jB,cAAgB,SAAUD,GAC5C,IAAI5b,EAAQxI,KACRskB,EAAS,IAAI/F,EAAOtJ,KAAK,CACzBjL,OAAQ,mBACRT,KAAM,QACNgb,YAAa,EACbH,KAAMA,EAAO,WACbI,aAAc,EACdC,WAAW,EACXC,eAAgB7F,EAAe,GAAK,SAEpC8F,EAAO3kB,KACXskB,EAAOvb,GAAG,wBAAwB,SAAUyE,GACxCmX,EAAKC,iBAAiBpX,MAE1B8W,EAAOvb,GAAG,aAAa,SAAUyE,GAC7B8W,EAAOO,WACPrX,EAAEsX,cAAe,KAErBR,EAAOvb,GAAG,WAAW,SAAUyE,GAC3BA,EAAEsX,cAAe,KAErBR,EAAOvb,GAAG,cAAc,WACpB,IAAIkW,EAAM1d,EAASiR,MAAMkD,SAASlN,EAAMoB,YACpCmb,EAAShG,EAAUqF,EAAMnF,GAC7BqF,EAAOU,WAAWC,QAAQC,MAAMH,OAASA,EACzCvc,EAAM2c,eAAgB,KAE1Bb,EAAOvb,GAAG,YAAY,WAClBub,EAAOU,WAAWC,QAAQC,MAAMH,OAAS,GACzCvc,EAAM2c,eAAgB,KAE1BnlB,KAAKolB,IAAId,IAEbjG,EAAY5d,UAAU0jB,YAAc,WAChC,IAAI3b,EAAQxI,KACRqlB,EAAO,IAAI1gB,EAAQQ,MAAM,CACzBif,KAAM,OACNxhB,MAAO,EACPqB,OAAQ,EACRwgB,WAAW,EACXa,UAAW,SAAU1jB,GACjB,IAAIkiB,EAAK9jB,KAAKulB,YACVtU,EAAU6S,EAAG7S,UACjBrP,EAAImB,YACJnB,EAAIoE,MAAMiL,GAAUA,EAASjR,KAAK4C,QAAoB,EAAVqO,EAAajR,KAAKiE,SAAqB,EAAVgN,GACzErP,EAAIsB,OAAOlD,KAAK4C,QAAU,GAAIqO,GAC1B6S,EAAG0B,iBACH5jB,EAAIuB,OAAOnD,KAAK4C,QAAU,GAAIkhB,EAAG2B,qBAAuBtkB,EAAOsF,KAAKif,MAAM1lB,KAAKiE,UAAYgN,GAE/FrP,EAAI+B,gBAAgB3D,OAExB2lB,QAAS,SAAU/jB,EAAK6d,GACpB,GAAKjX,EAAMod,0BAAX,CAGA,IAAI3U,EAAUzI,EAAMyI,UACpBrP,EAAImB,YACJnB,EAAIoE,MAAMiL,GAAUA,EAASwO,EAAM7c,QAAoB,EAAVqO,EAAawO,EAAMxb,SAAqB,EAAVgN,GAC3ErP,EAAI+B,gBAAgB8b,OAG5Bzf,KAAKolB,IAAIC,GACTrlB,KAAK0hB,WAAW2D,GAChBA,EAAKtc,GAAG,aAAa,SAAUyE,GAC3BA,EAAEsX,cAAe,KAErBO,EAAKtc,GAAG,YAAY,SAAUyE,GAC1BA,EAAEsX,cAAe,KAErBO,EAAKtc,GAAG,WAAW,SAAUyE,GACzBA,EAAEsX,cAAe,MAGzBzG,EAAY5d,UAAUmkB,iBAAmB,SAAUpX,GAC/CxN,KAAKqiB,kBAAoB7U,EAAEqY,OAAOzB,OAAOxY,MAAM,KAAK,GACpD,IAAInI,EAAQzD,KAAKyiB,eACb7f,EAAQa,EAAMb,MACdqB,EAASR,EAAMQ,OACf6hB,EAAahkB,KAAKyV,KAAKzV,KAAKikB,IAAInjB,EAAO,GAAKd,KAAKikB,IAAI9hB,EAAQ,IACjEjE,KAAKmH,IAAMrF,KAAK2K,IAAIxI,EAAS6hB,GAC7B9lB,KAAKoH,IAAMtF,KAAK2K,IAAI7J,EAAQkjB,GAC5BE,OAAOC,iBAAiB,YAAajmB,KAAKwgB,kBAC1CwF,OAAOC,iBAAiB,YAAajmB,KAAKwgB,kBAC1CwF,OAAOC,iBAAiB,UAAWjmB,KAAK0gB,gBAAgB,GACxDsF,OAAOC,iBAAiB,WAAYjmB,KAAK0gB,gBAAgB,GACzD1gB,KAAKsgB,eAAgB,EACrB,IAAI4F,EAAK1Y,EAAEqY,OAAO/D,sBACdqE,EAAM3Y,EAAEqY,OAAOb,WAAWoB,qBAC9BpmB,KAAKqmB,kBAAoB,CACrBtiB,EAAGoiB,EAAIpiB,EAAImiB,EAAGniB,EACdC,EAAGmiB,EAAIniB,EAAIkiB,EAAGliB,GAElBhE,KAAKsmB,MAAM,iBAAkB,CAAEC,IAAK/Y,EAAGqY,OAAQ7lB,KAAK4gB,YACpD5gB,KAAKihB,OAAOxZ,SAAQ,SAAUoe,GAC1BA,EAAOS,MAAM,iBAAkB,CAAEC,IAAK/Y,EAAGqY,OAAQA,QAGzDxH,EAAY5d,UAAU+f,iBAAmB,SAAUhT,GAC/C,IAAIzJ,EAAGC,EAAGwiB,EACNC,EAAazmB,KAAK4hB,QAAQ,IAAM5hB,KAAKqiB,mBACrCqE,EAAQD,EAAWzB,WACvB0B,EAAMC,qBAAqBnZ,GAC3B,IAAIoZ,EAAKF,EAAMN,qBACXS,EAAa,CACb9iB,EAAG6iB,EAAG7iB,EAAI/D,KAAKqmB,kBAAkBtiB,EACjCC,EAAG4iB,EAAG5iB,EAAIhE,KAAKqmB,kBAAkBriB,GAEjC8iB,EAASL,EAAW3E,sBACxB2E,EAAWvE,oBAAoB2E,GAC/B,IAAIE,EAASN,EAAW3E,sBACxB,GAAIgF,EAAO/iB,IAAMgjB,EAAOhjB,GAAK+iB,EAAO9iB,IAAM+iB,EAAO/iB,EAGjD,GAA+B,YAA3BhE,KAAKqiB,kBAAT,CAiBA,IAAI2E,EAAiBhnB,KAAKinB,aAAezZ,EAAE0Z,SACvCC,EAAkBnnB,KAAKmnB,mBAAqB3Z,EAAE4Z,OAClD,GAA+B,aAA3BpnB,KAAKqiB,mBACL,GAAI2E,EAAgB,CAChB,IAAIK,EAAeF,EACb,CACEpjB,EAAG/D,KAAK4C,QAAU,EAClBoB,EAAGhE,KAAKiE,SAAW,GAErB,CACEF,EAAG/D,KAAK4hB,QAAQ,iBAAiB7d,IACjCC,EAAGhE,KAAK4hB,QAAQ,iBAAiB5d,KAEzCwiB,EAAgB1kB,KAAKyV,KAAKzV,KAAKikB,IAAIsB,EAAatjB,EAAI0iB,EAAW1iB,IAAK,GAChEjC,KAAKikB,IAAIsB,EAAarjB,EAAIyiB,EAAWziB,IAAK,IAC9C,IAAIsjB,EAAWtnB,KAAK4hB,QAAQ,aAAa7d,IAAMsjB,EAAatjB,GAAK,EAAI,EACjEwjB,EAAWvnB,KAAK4hB,QAAQ,aAAa5d,IAAMqjB,EAAarjB,GAAK,EAAI,EACrED,EAAIyiB,EAAgBxmB,KAAKoH,IAAMkgB,EAC/BtjB,EAAIwiB,EAAgBxmB,KAAKmH,IAAMogB,EAC/BvnB,KAAK4hB,QAAQ,aAAa7d,EAAEsjB,EAAatjB,EAAIA,GAC7C/D,KAAK4hB,QAAQ,aAAa5d,EAAEqjB,EAAarjB,EAAIA,SAGhD,GAA+B,eAA3BhE,KAAKqiB,kBACVriB,KAAK4hB,QAAQ,aAAa5d,EAAEyiB,EAAWziB,UAEtC,GAA+B,cAA3BhE,KAAKqiB,kBAAmC,CAC7C,GAAI2E,EAAgB,CACZK,EAAeF,EACb,CACEpjB,EAAG/D,KAAK4C,QAAU,EAClBoB,EAAGhE,KAAKiE,SAAW,GAErB,CACEF,EAAG/D,KAAK4hB,QAAQ,gBAAgB7d,IAChCC,EAAGhE,KAAK4hB,QAAQ,gBAAgB5d,KAExCwiB,EAAgB1kB,KAAKyV,KAAKzV,KAAKikB,IAAIU,EAAW1iB,IAAMsjB,EAAatjB,EAAG,GAChEjC,KAAKikB,IAAIsB,EAAarjB,EAAIyiB,EAAWziB,IAAK,IAC1CsjB,EAAWtnB,KAAK4hB,QAAQ,cAAc7d,IAAMsjB,EAAatjB,GAAK,EAAI,EAClEwjB,EAAWvnB,KAAK4hB,QAAQ,cAAc5d,IAAMqjB,EAAarjB,GAAK,EAAI,EACtED,EAAIyiB,EAAgBxmB,KAAKoH,IAAMkgB,EAC/BtjB,EAAIwiB,EAAgBxmB,KAAKmH,IAAMogB,EAC/BvnB,KAAK4hB,QAAQ,cAAc7d,EAAEsjB,EAAatjB,EAAIA,GAC9C/D,KAAK4hB,QAAQ,cAAc5d,EAAEqjB,EAAarjB,EAAIA,GAElD,IAAImiB,EAAMM,EAAWe,WACrBxnB,KAAK4hB,QAAQ,aAAa5d,EAAEmiB,EAAIniB,GAChChE,KAAK4hB,QAAQ,iBAAiB7d,EAAEoiB,EAAIpiB,QAEnC,GAA+B,gBAA3B/D,KAAKqiB,kBACVriB,KAAK4hB,QAAQ,aAAa7d,EAAE0iB,EAAW1iB,UAEtC,GAA+B,iBAA3B/D,KAAKqiB,kBACVriB,KAAK4hB,QAAQ,iBAAiB7d,EAAE0iB,EAAW1iB,UAE1C,GAA+B,gBAA3B/D,KAAKqiB,kBAAqC,CAC/C,GAAI2E,EAAgB,CACZK,EAAeF,EACb,CACEpjB,EAAG/D,KAAK4C,QAAU,EAClBoB,EAAGhE,KAAKiE,SAAW,GAErB,CACEF,EAAG/D,KAAK4hB,QAAQ,cAAc7d,IAC9BC,EAAGhE,KAAK4hB,QAAQ,cAAc5d,KAEtCwiB,EAAgB1kB,KAAKyV,KAAKzV,KAAKikB,IAAIsB,EAAatjB,EAAI0iB,EAAW1iB,IAAK,GAChEjC,KAAKikB,IAAIU,EAAWziB,IAAMqjB,EAAarjB,EAAG,IAC1CsjB,EAAWD,EAAatjB,EAAI0iB,EAAW1iB,KAAO,EAAI,EAClDwjB,EAAWd,EAAWziB,IAAMqjB,EAAarjB,GAAK,EAAI,EACtDD,EAAIyiB,EAAgBxmB,KAAKoH,IAAMkgB,EAC/BtjB,EAAIwiB,EAAgBxmB,KAAKmH,IAAMogB,EAC/Bd,EAAW1iB,EAAEsjB,EAAatjB,EAAIA,GAC9B0iB,EAAWziB,EAAEqjB,EAAarjB,EAAIA,GAElCmiB,EAAMM,EAAWe,WACjBxnB,KAAK4hB,QAAQ,aAAa7d,EAAEoiB,EAAIpiB,GAChC/D,KAAK4hB,QAAQ,iBAAiB5d,EAAEmiB,EAAIniB,QAEnC,GAA+B,kBAA3BhE,KAAKqiB,kBACVriB,KAAK4hB,QAAQ,iBAAiB5d,EAAEyiB,EAAWziB,UAE1C,GAA+B,iBAA3BhE,KAAKqiB,mBACV,GAAI2E,EAAgB,CACZK,EAAeF,EACb,CACEpjB,EAAG/D,KAAK4C,QAAU,EAClBoB,EAAGhE,KAAKiE,SAAW,GAErB,CACEF,EAAG/D,KAAK4hB,QAAQ,aAAa7d,IAC7BC,EAAGhE,KAAK4hB,QAAQ,aAAa5d,KAErCwiB,EAAgB1kB,KAAKyV,KAAKzV,KAAKikB,IAAIU,EAAW1iB,IAAMsjB,EAAatjB,EAAG,GAChEjC,KAAKikB,IAAIU,EAAWziB,IAAMqjB,EAAarjB,EAAG,IAC1CsjB,EAAWtnB,KAAK4hB,QAAQ,iBAAiB7d,IAAMsjB,EAAatjB,GAAK,EAAI,EACrEwjB,EAAWvnB,KAAK4hB,QAAQ,iBAAiB5d,IAAMqjB,EAAarjB,GAAK,EAAI,EACzED,EAAIyiB,EAAgBxmB,KAAKoH,IAAMkgB,EAC/BtjB,EAAIwiB,EAAgBxmB,KAAKmH,IAAMogB,EAC/BvnB,KAAK4hB,QAAQ,iBAAiB7d,EAAEsjB,EAAatjB,EAAIA,GACjD/D,KAAK4hB,QAAQ,iBAAiB5d,EAAEqjB,EAAarjB,EAAIA,SAIrDyjB,QAAQpI,MAAM,IAAIqI,MAAM,iDACpB1nB,KAAKqiB,oBAET8E,EAAkBnnB,KAAKmnB,mBAAqB3Z,EAAE4Z,OAClD,GAAID,EAAiB,CACjB,IAAIhS,EAAUnV,KAAK4hB,QAAQ,aACvBtM,EAActV,KAAK4hB,QAAQ,iBAC3B+F,EAAaxS,EAAQpR,IACrB6jB,EAAazS,EAAQnR,IACrB6jB,EAAgB7nB,KAAK+E,WAAauQ,EAAYvR,IAC9C+jB,EAAgB9nB,KAAKgF,YAAcsQ,EAAYtR,IACnDsR,EAAYyS,KAAK,CACbhkB,GAAI4jB,EACJ3jB,GAAI4jB,IAERzS,EAAQ4S,KAAK,CACThkB,EAAG8jB,EACH7jB,EAAG8jB,IAGX,IAAIxE,EAAStjB,KAAK4hB,QAAQ,aAAaE,sBACvC/d,EAAIuf,EAAOvf,EACXC,EAAIsf,EAAOtf,EACX,IAAIpB,EAAQ5C,KAAK4hB,QAAQ,iBAAiB7d,IAAM/D,KAAK4hB,QAAQ,aAAa7d,IACtEE,EAASjE,KAAK4hB,QAAQ,iBAAiB5d,IAAMhE,KAAK4hB,QAAQ,aAAa5d,IAC3EhE,KAAKgoB,cAAc,CACfjkB,EAAGA,EACHC,EAAGA,EACHpB,MAAOA,EACPqB,OAAQA,EACR2F,SAAUrI,EAASiR,MAAMkD,SAAS1V,KAAK4J,aACxC4D,OAzJH,CACI,IAAI/J,EAAQzD,KAAKyiB,eACjB1e,EAAI0iB,EAAW1iB,IAAMN,EAAMb,MAAQ,EACnCoB,GAAKyiB,EAAWziB,IAAMP,EAAMQ,OAAS,EACrC,IAAIgkB,EAAQnmB,KAAKY,OAAOsB,EAAGD,GAAKjC,KAAKC,GAAK,EACtC0B,EAAMQ,OAAS,IACfgkB,GAASnmB,KAAKC,IAElB,IAAImmB,EAAc3mB,EAASiR,MAAMkD,SAAS1V,KAAK4J,YAC3Cue,EAAcD,EAAcD,EAC5B/H,EAAM3e,EAASiR,MAAMkD,SAAS1V,KAAKooB,yBACnCC,EAAatI,EAAQ/f,KAAKsoB,gBAAiBH,EAAajI,GACxDqI,EAAOF,EAAa5kB,EAAMmG,SAC1B6V,EAAQG,EAAmBnc,EAAO8kB,GACtCvoB,KAAKgoB,cAAcvI,EAAOjS,KA6IlC6Q,EAAY5d,UAAUigB,eAAiB,SAAUlT,GAC7CxN,KAAKwoB,cAAchb,IAEvB6Q,EAAY5d,UAAUmjB,qBAAuB,WACzC,OAAO5jB,KAAKyoB,gBAEhBpK,EAAY5d,UAAU+nB,cAAgB,SAAUhb,GAC5C,GAAIxN,KAAKsgB,cAAe,CACpBtgB,KAAKsgB,eAAgB,EACrB0F,OAAO0C,oBAAoB,YAAa1oB,KAAKwgB,kBAC7CwF,OAAO0C,oBAAoB,YAAa1oB,KAAKwgB,kBAC7CwF,OAAO0C,oBAAoB,UAAW1oB,KAAK0gB,gBAAgB,GAC3DsF,OAAO0C,oBAAoB,WAAY1oB,KAAK0gB,gBAAgB,GAC5D,IAAII,EAAO9gB,KAAK4gB,UAChB5gB,KAAKsmB,MAAM,eAAgB,CAAEC,IAAK/Y,EAAGqY,OAAQ/E,IACzCA,GACA9gB,KAAKihB,OAAOxZ,SAAQ,SAAUoe,GAC1BA,EAAOS,MAAM,eAAgB,CAAEC,IAAK/Y,EAAGqY,OAAQA,OAGvD7lB,KAAKqiB,kBAAoB,OAGjChE,EAAY5d,UAAUunB,cAAgB,SAAUW,EAAUpC,GACtD,IAAI/d,EAAQxI,KACR4oB,EAAW5oB,KAAKyiB,eAChBoG,EAAU,EACd,GAAI1nB,EAAOsF,KAAK2Y,SAASuJ,EAAS/lB,MAAyB,GAAjB5C,KAAKiR,UAAgB4X,EAASA,GACpE7oB,KAAK2gB,cAGT,GAAIxf,EAAOsF,KAAK2Y,SAASuJ,EAAS1kB,OAA0B,GAAjBjE,KAAKiR,UAAgB4X,EAASA,GACrE7oB,KAAK2gB,aADT,CAIA,IAAImI,GAAqB,EACrBlS,EAAI,IAAIzV,EAAO4iB,UAEnB,GADAnN,EAAE3T,OAAO1B,EAASiR,MAAMkD,SAAS1V,KAAK4J,aAClC5J,KAAKqiB,mBACLsG,EAAS/lB,MAAQ,GACjB5C,KAAKqiB,kBAAkBjS,QAAQ,SAAW,EAAG,CAC7C,IAAItM,EAAS8S,EAAElP,MAAM,CACjB3D,EAAqB,GAAjB/D,KAAKiR,UACTjN,EAAG,IAQP,GANA2kB,EAAS5kB,GAAKD,EAAOC,EACrB4kB,EAAS3kB,GAAKF,EAAOE,EACrB2kB,EAAS/lB,OAA0B,EAAjB5C,KAAKiR,UACvBjR,KAAKqiB,kBAAoBriB,KAAKqiB,kBAAkB5I,QAAQ,OAAQ,SAChEzZ,KAAKqmB,kBAAkBtiB,GAAKD,EAAOC,EACnC/D,KAAKqmB,kBAAkBriB,GAAKF,EAAOE,GAC9B8kB,EAED,YADA9oB,KAAK2gB,cAIR,GAAI3gB,KAAKqiB,mBACVsG,EAAS/lB,MAAQ,GACjB5C,KAAKqiB,kBAAkBjS,QAAQ,UAAY,EAAG,CAC1CtM,EAAS8S,EAAElP,MAAM,CACjB3D,EAAoB,EAAjB/D,KAAKiR,UACRjN,EAAG,IAMP,GAJAhE,KAAKqiB,kBAAoBriB,KAAKqiB,kBAAkB5I,QAAQ,QAAS,QACjEzZ,KAAKqmB,kBAAkBtiB,GAAKD,EAAOC,EACnC/D,KAAKqmB,kBAAkBriB,GAAKF,EAAOE,EACnC2kB,EAAS/lB,OAA0B,EAAjB5C,KAAKiR,WAClB6X,EAED,YADA9oB,KAAK2gB,SAIb,GAAI3gB,KAAKqiB,mBACLsG,EAAS1kB,OAAS,GAClBjE,KAAKqiB,kBAAkBjS,QAAQ,QAAU,EAAG,CACxCtM,EAAS8S,EAAElP,MAAM,CACjB3D,EAAG,EACHC,EAAqB,GAAjBhE,KAAKiR,YAQb,GANA0X,EAAS5kB,GAAKD,EAAOC,EACrB4kB,EAAS3kB,GAAKF,EAAOE,EACrBhE,KAAKqiB,kBAAoBriB,KAAKqiB,kBAAkB5I,QAAQ,MAAO,UAC/DzZ,KAAKqmB,kBAAkBtiB,GAAKD,EAAOC,EACnC/D,KAAKqmB,kBAAkBriB,GAAKF,EAAOE,EACnC2kB,EAAS1kB,QAA2B,EAAjBjE,KAAKiR,WACnB6X,EAED,YADA9oB,KAAK2gB,cAIR,GAAI3gB,KAAKqiB,mBACVsG,EAAS1kB,OAAS,GAClBjE,KAAKqiB,kBAAkBjS,QAAQ,WAAa,EAAG,CAC3CtM,EAAS8S,EAAElP,MAAM,CACjB3D,EAAG,EACHC,EAAoB,EAAjBhE,KAAKiR,YAMZ,GAJAjR,KAAKqiB,kBAAoBriB,KAAKqiB,kBAAkB5I,QAAQ,SAAU,OAClEzZ,KAAKqmB,kBAAkBtiB,GAAKD,EAAOC,EACnC/D,KAAKqmB,kBAAkBriB,GAAKF,EAAOE,EACnC2kB,EAAS1kB,QAA2B,EAAjBjE,KAAKiR,WACnB6X,EAED,YADA9oB,KAAK2gB,SAIb,GAAI3gB,KAAK+oB,eAAgB,CACrB,IAAIC,EAAUhpB,KAAK+oB,cAAL/oB,CAAoB4oB,EAAUD,GACxCK,EACAL,EAAWK,EAGX7nB,EAAOsF,KAAKwC,KAAK,0EAGzB,IAAIggB,EAAW,IACXC,EAAQ,IAAI/nB,EAAO4iB,UACvBmF,EAAMlmB,UAAU4lB,EAAS7kB,EAAG6kB,EAAS5kB,GACrCklB,EAAMjmB,OAAO2lB,EAAShf,UACtBsf,EAAM9a,MAAMwa,EAAShmB,MAAQqmB,EAAUL,EAAS3kB,OAASglB,GACzD,IAAIE,EAAQ,IAAIhoB,EAAO4iB,UACvBoF,EAAMnmB,UAAU2lB,EAAS5kB,EAAG4kB,EAAS3kB,GACrCmlB,EAAMlmB,OAAO0lB,EAAS/e,UACtBuf,EAAM/a,MAAMua,EAAS/lB,MAAQqmB,EAAUN,EAAS1kB,OAASglB,GACzD,IAAIhB,EAAQkB,EAAMC,SAASF,EAAMlF,UACjChkB,KAAKihB,OAAOxZ,SAAQ,SAAUqZ,GAC1B,IAAI3a,EACAkjB,EAAkBvI,EAAKyE,YAAY3B,uBACnC0F,EAAiBxI,EAAK2H,eAAec,OACzCD,EAAetmB,UAAU8d,EAAKyC,UAAWzC,EAAK0C,WAC9C,IAAIgG,EAAoB,IAAIroB,EAAO4iB,UACnCyF,EACKJ,SAASC,EAAgBE,OAAOvF,UAChCoF,SAASnB,GACTmB,SAASC,GACTD,SAASE,GACd,IAAI7lB,EAAQ+lB,EAAkBC,YAC9B3I,EAAK4I,SAASjmB,GACd+E,EAAM8d,MAAM,YAAa,CAAEC,IAAKA,EAAKV,OAAQ/E,IAC7CA,EAAKwF,MAAM,YAAa,CAAEC,IAAKA,EAAKV,OAAQ/E,IACjB,QAA1B3a,EAAK2a,EAAKnD,kBAA+B,IAAPxX,GAAyBA,EAAGwjB,eAEnE3pB,KAAK4J,SAASzI,EAAOsF,KAAKmjB,aAAajB,EAAS/e,WAChD5J,KAAKwhB,uBACLxhB,KAAK2gB,SACL3gB,KAAK2d,WAAWgM,cAEpBtL,EAAY5d,UAAUopB,YAAc,WAChC7pB,KAAKwhB,uBACLxhB,KAAK2gB,UAETtC,EAAY5d,UAAUqpB,kBAAoB,SAAUC,EAAUtmB,GAC1D,IAAI6gB,EAAStkB,KAAK4hB,QAAQmI,GAC1BzF,EAAOoF,SAASjmB,IAEpB4a,EAAY5d,UAAUkgB,OAAS,WAC3B,IACIxa,EADAqC,EAAQxI,KAERyD,EAAQzD,KAAKyiB,eACjBziB,KAAK4J,SAASzI,EAAOsF,KAAKmjB,aAAanmB,EAAMmG,WAC7C,IAAIhH,EAAQa,EAAMb,MACdqB,EAASR,EAAMQ,OACf+lB,EAAiBhqB,KAAKgqB,iBACtBC,EAAgBjqB,KAAKiqB,gBACrBhZ,EAAUjR,KAAKiR,UACfiZ,EAAalqB,KAAKkqB,aACtBlqB,KAAKmqB,KAAK,YAAYC,MAAK,SAAUtJ,GACjCA,EAAK4I,SAAS,CACV9mB,MAAOsnB,EACPjmB,OAAQimB,EACR3G,QAAS2G,EAAa,EACtB1G,QAAS0G,EAAa,EACtBlgB,OAAQxB,EAAM6hB,eACd9F,YAAa/b,EAAM8hB,oBACnB/gB,KAAMf,EAAM+hB,aACZrV,aAAc1M,EAAMgiB,0BAG5BxqB,KAAK8pB,kBAAkB,YAAa,CAChC/lB,EAAG,EACHC,EAAG,EACHuf,QAAS2G,EAAa,EAAIjZ,EAC1BuS,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,aAAe,IAEpEpQ,KAAK8pB,kBAAkB,cAAe,CAClC/lB,EAAGnB,EAAQ,EACXoB,EAAG,EACHwf,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,eAAiB,IAEtEpQ,KAAK8pB,kBAAkB,aAAc,CACjC/lB,EAAGnB,EACHoB,EAAG,EACHuf,QAAS2G,EAAa,EAAIjZ,EAC1BuS,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,cAAgB,IAErEpQ,KAAK8pB,kBAAkB,eAAgB,CACnC/lB,EAAG,EACHC,EAAGC,EAAS,EACZsf,QAAS2G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,gBAAkB,IAEvEpQ,KAAK8pB,kBAAkB,gBAAiB,CACpC/lB,EAAGnB,EACHoB,EAAGC,EAAS,EACZsf,QAAS2G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,iBAAmB,IAExEpQ,KAAK8pB,kBAAkB,eAAgB,CACnC/lB,EAAG,EACHC,EAAGC,EACHsf,QAAS2G,EAAa,EAAIjZ,EAC1BuS,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,gBAAkB,IAEvEpQ,KAAK8pB,kBAAkB,iBAAkB,CACrC/lB,EAAGnB,EAAQ,EACXoB,EAAGC,EACHuf,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,kBAAoB,IAEzEpQ,KAAK8pB,kBAAkB,gBAAiB,CACpC/lB,EAAGnB,EACHoB,EAAGC,EACHsf,QAAS2G,EAAa,EAAIjZ,EAC1BuS,QAAS0G,EAAa,EAAIjZ,EAC1BwZ,QAASR,GAAiBD,EAAe5Z,QAAQ,iBAAmB,IAExEpQ,KAAK8pB,kBAAkB,WAAY,CAC/B/lB,EAAGnB,EAAQ,EACXoB,GAAIhE,KAAKylB,qBAAuBtkB,EAAOsF,KAAKif,MAAMzhB,GAAUgN,EAC5DwZ,QAASzqB,KAAKwlB,kBAElBxlB,KAAK8pB,kBAAkB,QAAS,CAC5BlnB,MAAOA,EACPqB,OAAQA,EACRwmB,QAASzqB,KAAK0qB,gBACd1gB,OAAQhK,KAAK2qB,eACbpG,YAAavkB,KAAK4qB,oBAClBC,KAAM7qB,KAAK8qB,aACX/mB,EAAG,EACHC,EAAG,IAEoB,QAA1BmC,EAAKnG,KAAK2d,kBAA+B,IAAPxX,GAAyBA,EAAGwjB,aAEnEtL,EAAY5d,UAAUsqB,eAAiB,WACnC,OAAO/qB,KAAKsgB,eAEhBjC,EAAY5d,UAAUuqB,cAAgB,WAClC,GAAIhrB,KAAKsgB,cAAe,CACpBtgB,KAAKwoB,gBACL,IAAI/B,EAAazmB,KAAK4hB,QAAQ,IAAM5hB,KAAKqiB,mBACrCoE,GACAA,EAAW5B,aAIvBxG,EAAY5d,UAAUwqB,QAAU,WAO5B,OANIjrB,KAAKglB,YAAchlB,KAAKmlB,gBACxBnlB,KAAKglB,WAAWC,QAAQC,MAAMH,OAAS,IAE3CvG,EAAQ0M,MAAMzqB,UAAUwqB,QAAQtqB,KAAKX,MACrCA,KAAKmhB,SACLnhB,KAAKwoB,gBACExoB,MAEXqe,EAAY5d,UAAU0qB,SAAW,WAC7B,OAAO7M,EAAO8M,KAAK3qB,UAAU0qB,SAASxqB,KAAKX,OAExCqe,EAxvBO,CAyvBhBG,EAAQ0M,OAEV,SAASG,EAAgBC,GAcrB,OAbMA,aAAe/qB,OACjBY,EAAOsF,KAAKwC,KAAK,2CAEjBqiB,aAAe/qB,OACf+qB,EAAI7jB,SAAQ,SAAU2c,IACmB,IAAjC9E,EAAclP,QAAQgU,IACtBjjB,EAAOsF,KAAKwC,KAAK,wBACbmb,EACA,0BACA9E,EAAchP,KAAK,UAI5Bgb,GAAO,GAflBtqB,EAAQqd,YAAcA,EAiBtBA,EAAY5d,UAAU0D,UAAY,cAClCkK,EAASjK,cAAcia,GACvBjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,iBAAkBiB,EAAe+L,GAChFjqB,EAAUiD,QAAQC,gBAAgB+Z,EAAa,iBAAiB,GAChEjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,aAAc,GAAI/c,EAAaiD,sBAC9EnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,iBAAiB,GAChEjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,gBAAiB,IAChEjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,qBAAsB,GAAI/c,EAAaiD,sBACtFnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,wBAAyB,EAAG/c,EAAaiD,sBACxFnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,iBAAiB,GAChEjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,eAAgB,oBAC/Djd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,oBAAqB,EAAG/c,EAAaiD,sBACpFnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,aAAc,SAC7Djd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,qBAAsB,EAAG/c,EAAaiD,sBACrFnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,eAAgB,oBAC/Djd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,oBAAqB,EAAG/c,EAAaiD,sBACpFnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,cAC/Cjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,aAAa,GAC5Djd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,mBAAmB,GAClEjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,gBAAgB,GAC/Djd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,UAAW,EAAG/c,EAAaiD,sBAC1EnD,EAAUiD,QAAQC,gBAAgB+Z,EAAa,QAC/Cjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,SAC/Cjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,gBAC/Cjd,EAAUiD,QAAQC,gBAAgB+Z,EAAa,2BAA2B,GAC1Ejd,EAAUiD,QAAQ0X,WAAWsC,EAAa,CACtCkN,YAAa,gBACbC,oBAAqB,qBACrBC,gBAAiB,mBAErBtqB,EAAOqD,WAAWC,WAAW4Z,I,kCC58B7B,IAAIte,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0qB,IAAM1qB,EAAQ2qB,WAAQ,EAC9B,IAAIxqB,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClB6Z,EAAU,EAAQ,QAClBld,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBqO,EAAmB,CACnB,aACA,WACA,YACA,UACA,aACA,OACA,QACA,UACDhB,EAAe,eAAgBc,EAAO,OAAQkc,EAAK,KAAMrc,EAAQ,QAASsc,EAAO,OAAQ9c,EAAO,OAAQc,EAAoBD,EAAiBxN,OAC5IupB,EAAS,SAAUnqB,GAEnB,SAASmqB,EAAMpjB,GACX,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KAKzC,OAJAwI,EAAMO,GAAG,aAAa,SAAUwd,GAC5BvmB,KAAK8rB,cAAcvF,EAAIwF,OACvB/rB,KAAKgsB,WAEFxjB,EA+DX,OAtEAzI,EAAU4rB,EAAOnqB,GASjBmqB,EAAMlrB,UAAUwrB,QAAU,WACtB,OAAOjsB,KAAKmqB,KAAK,QAAQ,IAE7BwB,EAAMlrB,UAAUyrB,OAAS,WACrB,OAAOlsB,KAAKmqB,KAAK,OAAO,IAE5BwB,EAAMlrB,UAAUqrB,cAAgB,SAAUjiB,GACtC,IAAiBrH,EAAbwI,EAAOhL,KACPmsB,EAAO,WACPnhB,EAAKghB,SAET,IAAKxpB,EAAI,EAAGA,EAAIqN,EAAmBrN,IAC/BqH,EAAKd,GAAG6G,EAAiBpN,GAAKoM,EAAcud,IAGpDR,EAAMlrB,UAAUsE,SAAW,WACvB,OAAO/E,KAAKisB,UAAUrpB,SAE1B+oB,EAAMlrB,UAAUuE,UAAY,WACxB,OAAOhF,KAAKisB,UAAUhoB,UAE1B0nB,EAAMlrB,UAAUurB,MAAQ,WACpB,IAAgDppB,EAAOqB,EAAQmoB,EAAkBvpB,EAAckB,EAAGC,EAAGqoB,EAAjGxiB,EAAO7J,KAAKisB,UAAWK,EAAMtsB,KAAKksB,SACtC,GAAIriB,GAAQyiB,EAAK,CAQb,OAPA1pB,EAAQiH,EAAKjH,QACbqB,EAAS4F,EAAK5F,SACdmoB,EAAmBE,EAAIF,mBACvBvpB,EAAeypB,EAAIzpB,eACnBwpB,EAAgBC,EAAID,gBACpBtoB,EAAI,EACJC,EAAI,EACIooB,GACJ,KAAKR,EACD7nB,EAAInB,EAAQ,EACZoB,GAAK,EAAIqoB,EACT,MACJ,KAAK9c,EACDxL,EAAInB,EAAQC,EACZmB,EAAIC,EAAS,EACb,MACJ,KAAK4nB,EACD9nB,EAAInB,EAAQ,EACZoB,EAAIC,EAASooB,EACb,MACJ,KAAKtd,EACDhL,GAAK,EAAIlB,EACTmB,EAAIC,EAAS,EACb,MAERqoB,EAAI5C,SAAS,CACT3lB,GAAI,EAAIA,EACRC,GAAI,EAAIA,EACRpB,MAAOA,EACPqB,OAAQA,IAEZ4F,EAAK6f,SAAS,CACV3lB,GAAI,EAAIA,EACRC,GAAI,EAAIA,MAIb2nB,EAvEC,CAwEVnN,EAAQ0M,OACVlqB,EAAQ2qB,MAAQA,EAChBA,EAAMlrB,UAAU0D,UAAY,QAC5B5C,EAAS6C,cAAcunB,GACvBxqB,EAAOqD,WAAWC,WAAWknB,GAC7B,IAAID,EAAO,SAAUlqB,GAEjB,SAASkqB,IACL,OAAkB,OAAXlqB,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KAyE/D,OA3EAD,EAAU2rB,EAAKlqB,GAIfkqB,EAAIjrB,UAAUkB,WAAa,SAAUiD,GACjC,IAAIhC,EAAQ5C,KAAK4C,QAASqB,EAASjE,KAAKiE,SAAUmoB,EAAmBpsB,KAAKosB,mBAAoBvpB,EAAe7C,KAAK6C,eAAgBwpB,EAAgBrsB,KAAKqsB,gBAAiBnX,EAAelV,KAAKkV,eACxLC,EAAU,EACVC,EAAW,EACXC,EAAa,EACbC,EAAc,EACU,kBAAjBJ,EACPC,EAAUC,EAAWC,EAAaC,EAAcxT,KAAK6F,IAAIuN,EAActS,EAAQ,EAAGqB,EAAS,IAG3FkR,EAAUrT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GAC7DmR,EAAWtT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GAC9DqR,EAAcxT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,GACjEoR,EAAavT,KAAK6F,IAAIuN,EAAa,IAAM,EAAGtS,EAAQ,EAAGqB,EAAS,IAEpEW,EAAQ7B,YACR6B,EAAQ1B,OAAOiS,EAAS,GACpBiX,IAAqBR,IACrBhnB,EAAQzB,QAAQP,EAAQC,GAAgB,EAAG,GAC3C+B,EAAQzB,OAAOP,EAAQ,GAAI,EAAIypB,GAC/BznB,EAAQzB,QAAQP,EAAQC,GAAgB,EAAG,IAE/C+B,EAAQzB,OAAOP,EAAQwS,EAAU,GACjCxQ,EAAQC,IAAIjC,EAAQwS,EAAUA,EAAUA,EAAqB,EAAVtT,KAAKC,GAAU,EAAG,GAAG,GACpEqqB,IAAqB7c,IACrB3K,EAAQzB,OAAOP,GAAQqB,EAASooB,GAAiB,GACjDznB,EAAQzB,OAAOP,EAAQC,EAAcoB,EAAS,GAC9CW,EAAQzB,OAAOP,GAAQqB,EAASooB,GAAiB,IAErDznB,EAAQzB,OAAOP,EAAOqB,EAASqR,GAC/B1Q,EAAQC,IAAIjC,EAAQ0S,EAAarR,EAASqR,EAAaA,EAAa,EAAGxT,KAAKC,GAAK,GAAG,GAChFqqB,IAAqBP,IACrBjnB,EAAQzB,QAAQP,EAAQC,GAAgB,EAAGoB,GAC3CW,EAAQzB,OAAOP,EAAQ,EAAGqB,EAASooB,GACnCznB,EAAQzB,QAAQP,EAAQC,GAAgB,EAAGoB,IAE/CW,EAAQzB,OAAOkS,EAAYpR,GAC3BW,EAAQC,IAAIwQ,EAAYpR,EAASoR,EAAYA,EAAYvT,KAAKC,GAAK,EAAGD,KAAKC,IAAI,GAC3EqqB,IAAqBrd,IACrBnK,EAAQzB,OAAO,GAAIc,EAASooB,GAAiB,GAC7CznB,EAAQzB,QAAQ,EAAIN,EAAcoB,EAAS,GAC3CW,EAAQzB,OAAO,GAAIc,EAASooB,GAAiB,IAEjDznB,EAAQzB,OAAO,EAAGgS,GAClBvQ,EAAQC,IAAIsQ,EAASA,EAASA,EAASrT,KAAKC,GAAe,EAAVD,KAAKC,GAAU,GAAG,GACnE6C,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5B0rB,EAAIjrB,UAAUmD,YAAc,WACxB,IAAIG,EAAI,EAAGC,EAAI,EAAGnB,EAAe7C,KAAK6C,eAAgBwpB,EAAgBrsB,KAAKqsB,gBAAiBE,EAAYvsB,KAAKosB,mBAAoBxpB,EAAQ5C,KAAK4C,QAASqB,EAASjE,KAAKiE,SAerK,OAdIsoB,IAAcX,GACd5nB,GAAKqoB,EACLpoB,GAAUooB,GAELE,IAAcV,EACnB5nB,GAAUooB,EAELE,IAAcxd,GACnBhL,GAAoB,IAAflB,EACLD,GAASC,GAEJ0pB,IAAchd,IACnB3M,GAAwB,IAAfC,GAEN,CACHkB,EAAGA,EACHC,EAAGA,EACHpB,MAAOA,EACPqB,OAAQA,IAGTynB,EA5ED,CA6ER/mB,EAAQQ,OACVnE,EAAQ0qB,IAAMA,EACdA,EAAIjrB,UAAU0D,UAAY,MAC1B5C,EAAS6C,cAAcsnB,GACvBtqB,EAAUiD,QAAQC,gBAAgBonB,EAAK,mBAAoBhc,GAC3DtO,EAAUiD,QAAQC,gBAAgBonB,EAAK,eAAgB,EAAGpqB,EAAaiD,sBACvEnD,EAAUiD,QAAQC,gBAAgBonB,EAAK,gBAAiB,EAAGpqB,EAAaiD,sBACxEnD,EAAUiD,QAAQC,gBAAgBonB,EAAK,eAAgB,EAAGpqB,EAAaiU,mCAAmC,IAC1GpU,EAAOqD,WAAWC,WAAWinB,I,kCCjM7B,IAAI3rB,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAa5CR,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwrB,UAAO,EACf,IAAIrrB,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnBirB,EAAQ,SAAUhrB,GAElB,SAASgrB,IACL,OAAkB,OAAXhrB,GAAmBA,EAAOC,MAAMzB,KAAM0B,YAAc1B,KA2B/D,OA7BAD,EAAUysB,EAAMhrB,GAIhBgrB,EAAK/rB,UAAUkB,WAAa,SAAUiD,GAClC,IAAIiR,EAAc7V,KAAK6V,cAAeD,EAAc5V,KAAK4V,cAAe6W,EAAYzsB,KAAKysB,YACzF7nB,EAAQ7B,YACR6B,EAAQ1B,OAAO,EAAG,EAAI0S,GACtB,IAAK,IAAIpT,EAAI,EAAGA,EAAgB,EAAZiqB,EAAejqB,IAAK,CACpC,IAAIsC,EAAStC,EAAI,IAAM,EAAIoT,EAAcC,EACrC9R,EAAIe,EAAShD,KAAKqF,IAAK3E,EAAIV,KAAKC,GAAM0qB,GACtCzoB,GAAK,EAAIc,EAAShD,KAAKsF,IAAK5E,EAAIV,KAAKC,GAAM0qB,GAC/C7nB,EAAQzB,OAAOY,EAAGC,GAEtBY,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAE5BwsB,EAAK/rB,UAAUsE,SAAW,WACtB,OAA4B,EAArB/E,KAAK4V,eAEhB4W,EAAK/rB,UAAUuE,UAAY,WACvB,OAA4B,EAArBhF,KAAK4V,eAEhB4W,EAAK/rB,UAAUwE,SAAW,SAAUrC,GAChC5C,KAAK4V,YAAYhT,EAAQ,IAE7B4pB,EAAK/rB,UAAUyE,UAAY,SAAUjB,GACjCjE,KAAK4V,YAAY3R,EAAS,IAEvBuoB,EA9BA,CA+BT7nB,EAAQQ,OACVnE,EAAQwrB,KAAOA,EACfA,EAAK/rB,UAAU0D,UAAY,OAC3BqoB,EAAK/rB,UAAU2E,WAAY,EAC3BonB,EAAK/rB,UAAU4E,oBAAsB,CAAC,cAAe,eACrD9D,EAAS6C,cAAcooB,GACvBprB,EAAUiD,QAAQC,gBAAgBkoB,EAAM,YAAa,EAAGlrB,EAAaiD,sBACrEnD,EAAUiD,QAAQC,gBAAgBkoB,EAAM,cAAe,EAAGlrB,EAAaiD,sBACvEnD,EAAUiD,QAAQC,gBAAgBkoB,EAAM,cAAe,EAAGlrB,EAAaiD,sBACvEpD,EAAOqD,WAAWC,WAAW+nB,I,kCC5D7B,IAAIzsB,EAAaC,MAAQA,KAAKD,WAAc,WACxC,IAAIE,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,KACzFP,EAAcC,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASS,IAAOZ,KAAKa,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOU,OAAOX,IAAMS,EAAGH,UAAYN,EAAEM,UAAW,IAAIG,IAV3C,GAaxC8rB,EAAkB1sB,MAAQA,KAAK0sB,gBAAmB,WAClD,IAAK,IAAItO,EAAI,EAAG1U,EAAI,EAAGijB,EAAKjrB,UAAUU,OAAQsH,EAAIijB,EAAIjjB,IAAK0U,GAAK1c,UAAUgI,GAAGtH,OACxE,IAAImU,EAAIhW,MAAM6d,GAAI9Q,EAAI,EAA3B,IAA8B5D,EAAI,EAAGA,EAAIijB,EAAIjjB,IACzC,IAAK,IAAIkjB,EAAIlrB,UAAUgI,GAAIuC,EAAI,EAAG4gB,EAAKD,EAAExqB,OAAQ6J,EAAI4gB,EAAI5gB,IAAKqB,IAC1DiJ,EAAEjJ,GAAKsf,EAAE3gB,GACjB,OAAOsK,GAEXnW,OAAOW,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQkD,UAAO,EACf,IAAI/C,EAAS,EAAQ,QACjBC,EAAY,EAAQ,QACpBuD,EAAU,EAAQ,QAClBrD,EAAe,EAAQ,QACvBC,EAAW,EAAQ,QACnB2C,EAAQ,SAAU1C,GAElB,SAAS0C,EAAKqE,GACV,IAAIC,EAAQhH,EAAOb,KAAKX,KAAMuI,IAAWvI,KAIzC,OAHAwI,EAAMO,GAAG,gFAAgF,WACrF/I,KAAKuiB,YAAY,oBAEd/Z,EAsHX,OA5HAzI,EAAUmE,EAAM1C,GAQhB0C,EAAKzD,UAAUkB,WAAa,SAAUiD,GAClC,IAA8H3C,EAAIoW,EAAK7V,EAAnIR,EAAShC,KAAKgC,SAAUI,EAASJ,EAAOI,OAAQD,EAAUnC,KAAKmC,UAAW2qB,EAAS9sB,KAAK8sB,SAAUC,EAAS/sB,KAAK+sB,SACpH,GAAK3qB,EAAL,CAKA,GAFAwC,EAAQ7B,YACR6B,EAAQ1B,OAAOlB,EAAO,GAAIA,EAAO,IACjB,IAAZG,GAAiBC,EAAS,EAAG,CAC7BH,EAAKjC,KAAKqC,mBACVgW,EAAMpW,EAAGG,OACTI,EAAIsqB,EAAS,EAAI,EACZA,GACDloB,EAAQqR,iBAAiBhU,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAErD,MAAOO,EAAI6V,EAAM,EACbzT,EAAQoR,cAAc/T,EAAGO,KAAMP,EAAGO,KAAMP,EAAGO,KAAMP,EAAGO,KAAMP,EAAGO,KAAMP,EAAGO,MAErEsqB,GACDloB,EAAQqR,iBAAiBhU,EAAGoW,EAAM,GAAIpW,EAAGoW,EAAM,GAAIrW,EAAOI,EAAS,GAAIJ,EAAOI,EAAS,SAG1F,GAAI2qB,EAAQ,CACbvqB,EAAI,EACJ,MAAOA,EAAIJ,EACPwC,EAAQoR,cAAchU,EAAOQ,KAAMR,EAAOQ,KAAMR,EAAOQ,KAAMR,EAAOQ,KAAMR,EAAOQ,KAAMR,EAAOQ,WAIlG,IAAKA,EAAI,EAAGA,EAAIJ,EAAQI,GAAK,EACzBoC,EAAQzB,OAAOnB,EAAOQ,GAAIR,EAAOQ,EAAI,IAGzCsqB,GACAloB,EAAQxB,YACRwB,EAAQjB,gBAAgB3D,OAGxB4E,EAAQ8R,YAAY1W,QAG5BkE,EAAKzD,UAAU4B,iBAAmB,WAC9B,OAAOrC,KAAK0iB,UAAU,gBAAiB1iB,KAAKgtB,oBAEhD9oB,EAAKzD,UAAUusB,kBAAoB,WAC/B,OAAIhtB,KAAK8sB,SACE9sB,KAAKitB,0BAGL9rB,EAAOsF,KAAKymB,cAAcltB,KAAKgC,SAAUhC,KAAKmC,YAG7D+B,EAAKzD,UAAUwsB,wBAA0B,WACrC,IAAIzsB,EAAIR,KAAKgC,SAAUqW,EAAM7X,EAAE4B,OAAQD,EAAUnC,KAAKmC,UAAWgrB,EAAqBhsB,EAAOsF,KAAK2mB,kBAAkB5sB,EAAE6X,EAAM,GAAI7X,EAAE6X,EAAM,GAAI7X,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI2B,GAAUkrB,EAAoBlsB,EAAOsF,KAAK2mB,kBAAkB5sB,EAAE6X,EAAM,GAAI7X,EAAE6X,EAAM,GAAI7X,EAAE6X,EAAM,GAAI7X,EAAE6X,EAAM,GAAI7X,EAAE,GAAIA,EAAE,GAAI2B,GAAUmrB,EAASnsB,EAAOsF,KAAKymB,cAAc1sB,EAAG2B,GAAUF,EAAK,CAACkrB,EAAmB,GAAIA,EAAmB,IACjYtW,OAAOyW,GACPzW,OAAO,CACRwW,EAAkB,GAClBA,EAAkB,GAClB7sB,EAAE6X,EAAM,GACR7X,EAAE6X,EAAM,GACRgV,EAAkB,GAClBA,EAAkB,GAClBF,EAAmB,GACnBA,EAAmB,GACnB3sB,EAAE,GACFA,EAAE,KAEN,OAAOyB,GAEXiC,EAAKzD,UAAUsE,SAAW,WACtB,OAAO/E,KAAK4D,cAAchB,OAE9BsB,EAAKzD,UAAUuE,UAAY,WACvB,OAAOhF,KAAK4D,cAAcK,QAE9BC,EAAKzD,UAAUmD,YAAc,WACzB,IAAI5B,EAAShC,KAAKgC,SAClB,GAAIA,EAAOI,OAAS,EAChB,MAAO,CACH2B,EAAG/B,EAAO,IAAM,EAChBgC,EAAGhC,EAAO,IAAM,EAChBY,MAAO,EACPqB,OAAQ,GAIZjC,EADmB,IAAnBhC,KAAKmC,UACIuqB,EAAe,CACpB1qB,EAAO,GACPA,EAAO,IACRhC,KAAKgtB,oBAAqB,CACzBhrB,EAAOA,EAAOI,OAAS,GACvBJ,EAAOA,EAAOI,OAAS,KAIlBpC,KAAKgC,SAOlB,IALA,IAII+B,EAAGC,EAJHqD,EAAOrF,EAAO,GACdsF,EAAOtF,EAAO,GACduF,EAAOvF,EAAO,GACdwF,EAAOxF,EAAO,GAET0H,EAAI,EAAGA,EAAI1H,EAAOI,OAAS,EAAGsH,IACnC3F,EAAI/B,EAAW,EAAJ0H,GACX1F,EAAIhC,EAAW,EAAJ0H,EAAQ,GACnBrC,EAAOvF,KAAK6F,IAAIN,EAAMtD,GACtBuD,EAAOxF,KAAK8F,IAAIN,EAAMvD,GACtBwD,EAAOzF,KAAK6F,IAAIJ,EAAMvD,GACtBwD,EAAO1F,KAAK8F,IAAIJ,EAAMxD,GAE1B,MAAO,CACHD,EAAGsD,EACHrD,EAAGuD,EACH3E,MAAO0E,EAAOD,EACdpD,OAAQuD,EAAOD,IAGhBrD,EA7HA,CA8HTS,EAAQQ,OACVnE,EAAQkD,KAAOA,EACfA,EAAKzD,UAAU0D,UAAY,OAC3BD,EAAKzD,UAAU4E,oBAAsB,CAAC,SAAU,SAAU,WAC1D9D,EAAS6C,cAAcF,GACvB9C,EAAUiD,QAAQC,gBAAgBJ,EAAM,UAAU,GAClD9C,EAAUiD,QAAQC,gBAAgBJ,EAAM,UAAU,GAClD9C,EAAUiD,QAAQC,gBAAgBJ,EAAM,UAAW,EAAG5C,EAAaiD,sBACnEnD,EAAUiD,QAAQC,gBAAgBJ,EAAM,SAAU,GAAI5C,EAAaisB,2BACnEpsB,EAAOqD,WAAWC,WAAWP","file":"js/chunk-vendors~4b562722.b531ab4f.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Line_1 = require(\"./Line\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Arrow = (function (_super) {\n __extends(Arrow, _super);\n function Arrow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Arrow.prototype._sceneFunc = function (ctx) {\n _super.prototype._sceneFunc.call(this, ctx);\n var PI2 = Math.PI * 2;\n var points = this.points();\n var tp = points;\n var fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n var n = points.length;\n var dx, dy;\n if (fromTension) {\n dx = points[n - 2] - (tp[tp.length - 2] + tp[tp.length - 4]) / 2;\n dy = points[n - 1] - (tp[tp.length - 1] + tp[tp.length - 3]) / 2;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n var length = this.pointerLength();\n var width = this.pointerWidth();\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n }\n var isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n };\n Arrow.prototype.getSelfRect = function () {\n var lineRect = _super.prototype.getSelfRect.call(this);\n var offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x - offset,\n y: lineRect.y - offset,\n width: lineRect.width + offset * 2,\n height: lineRect.height + offset * 2\n };\n };\n return Arrow;\n}(Line_1.Line));\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\nGlobal_1._registerNode(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nUtil_1.Collection.mapMethods(Arrow);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Circle = (function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype._sceneFunc = function (context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Circle.prototype.getWidth = function () {\n return this.radius() * 2;\n };\n Circle.prototype.getHeight = function () {\n return this.radius() * 2;\n };\n Circle.prototype.setWidth = function (width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n };\n Circle.prototype.setHeight = function (height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n };\n return Circle;\n}(Shape_1.Shape));\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\nGlobal_1._registerNode(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(Circle);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Image = (function (_super) {\n __extends(Image, _super);\n function Image() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Image.prototype._useBufferCanvas = function () {\n return _super.prototype._useBufferCanvas.call(this, true);\n };\n Image.prototype._sceneFunc = function (context) {\n var width = this.getWidth();\n var height = this.getHeight();\n var image = this.attrs.image;\n var params;\n if (image) {\n var cropWidth = this.attrs.cropWidth;\n var cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n context.drawImage.apply(context, params);\n }\n };\n Image.prototype._hitFunc = function (context) {\n var width = this.width(), height = this.height();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Image.prototype.getWidth = function () {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (((_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) || 0);\n };\n Image.prototype.getHeight = function () {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (((_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) || 0);\n };\n Image.fromURL = function (url, callback) {\n var img = Util_1.Util.createImageElement();\n img.onload = function () {\n var image = new Image({\n image: img,\n });\n callback(image);\n };\n img.crossOrigin = 'Anonymous';\n img.src = url;\n };\n return Image;\n}(Shape_1.Shape));\nexports.Image = Image;\nImage.prototype.className = 'Image';\nGlobal_1._registerNode(Image);\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(Image);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar RegularPolygon = (function (_super) {\n __extends(RegularPolygon, _super);\n function RegularPolygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RegularPolygon.prototype._sceneFunc = function (context) {\n var points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (var n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n };\n RegularPolygon.prototype._getPoints = function () {\n var sides = this.attrs.sides;\n var radius = this.attrs.radius || 0;\n var points = [];\n for (var n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n };\n RegularPolygon.prototype.getSelfRect = function () {\n var points = this._getPoints();\n var minX = points[0].x;\n var maxX = points[0].y;\n var minY = points[0].x;\n var maxY = points[0].y;\n points.forEach(function (point) {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n RegularPolygon.prototype.getWidth = function () {\n return this.radius() * 2;\n };\n RegularPolygon.prototype.getHeight = function () {\n return this.radius() * 2;\n };\n RegularPolygon.prototype.setWidth = function (width) {\n this.radius(width / 2);\n };\n RegularPolygon.prototype.setHeight = function (height) {\n this.radius(height / 2);\n };\n return RegularPolygon;\n}(Shape_1.Shape));\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\nGlobal_1._registerNode(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(RegularPolygon);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Path_1 = require(\"./Path\");\nvar Text_1 = require(\"./Text\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nvar TextPath = (function (_super) {\n __extends(TextPath, _super);\n function TextPath(config) {\n var _this = _super.call(this, config) || this;\n _this.dummyCanvas = Util_1.Util.createCanvasElement();\n _this.dataArray = [];\n _this.dataArray = Path_1.Path.parsePathData(_this.attrs.data);\n _this.on('dataChange.konva', function () {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this._setTextData();\n });\n _this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva', _this._setTextData);\n if (config && config['getKerning']) {\n Util_1.Util.warn('getKerning TextPath API is deprecated. Please use \"kerningFunc\" instead.');\n _this.kerningFunc(config['getKerning']);\n }\n _this._setTextData();\n return _this;\n }\n TextPath.prototype._sceneFunc = function (context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n var textDecoration = this.textDecoration();\n var fill = this.fill();\n var fontSize = this.fontSize();\n var glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n context.save();\n var p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n };\n TextPath.prototype._hitFunc = function (context) {\n context.beginPath();\n var glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n var p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n var p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n };\n TextPath.prototype.getTextWidth = function () {\n return this.textWidth;\n };\n TextPath.prototype.getTextHeight = function () {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n };\n TextPath.prototype.setText = function (text) {\n return Text_1.Text.prototype.setText.call(this, text);\n };\n TextPath.prototype._getContextFont = function () {\n return Text_1.Text.prototype._getContextFont.call(this);\n };\n TextPath.prototype._getTextSize = function (text) {\n var dummyCanvas = this.dummyCanvas;\n var _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n var metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(this.attrs.fontSize, 10),\n };\n };\n TextPath.prototype._setTextData = function () {\n var that = this;\n var size = this._getTextSize(this.attrs.text);\n var letterSpacing = this.letterSpacing();\n var align = this.align();\n var kerningFunc = this.kerningFunc();\n this.textWidth = size.width;\n this.textHeight = size.height;\n var textFullWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n this.glyphInfo = [];\n var fullPathWidth = 0;\n for (var l = 0; l < that.dataArray.length; l++) {\n if (that.dataArray[l].pathLength > 0) {\n fullPathWidth += that.dataArray[l].pathLength;\n }\n }\n var offset = 0;\n if (align === 'center') {\n offset = Math.max(0, fullPathWidth / 2 - textFullWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, fullPathWidth - textFullWidth);\n }\n var charArr = Text_1.stringToArray(this.text());\n var spacesNumber = this.text().split(' ').length - 1;\n var p0, p1, pathCmd;\n var pIndex = -1;\n var currentT = 0;\n var getNextPathSegment = function () {\n currentT = 0;\n var pathData = that.dataArray;\n for (var j = pIndex + 1; j < pathData.length; j++) {\n if (pathData[j].pathLength > 0) {\n pIndex = j;\n return pathData[j];\n }\n else if (pathData[j].command === 'M') {\n p0 = {\n x: pathData[j].points[0],\n y: pathData[j].points[1],\n };\n }\n }\n return {};\n };\n var findSegmentToFitCharacter = function (c) {\n var glyphWidth = that._getTextSize(c).width + letterSpacing;\n if (c === ' ' && align === 'justify') {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n var currLen = 0;\n var attempts = 0;\n p1 = undefined;\n while (Math.abs(glyphWidth - currLen) / glyphWidth > 0.01 &&\n attempts < 20) {\n attempts++;\n var cumulativePathLength = currLen;\n while (pathCmd === undefined) {\n pathCmd = getNextPathSegment();\n if (pathCmd &&\n cumulativePathLength + pathCmd.pathLength < glyphWidth) {\n cumulativePathLength += pathCmd.pathLength;\n pathCmd = undefined;\n }\n }\n if (pathCmd === {} || p0 === undefined) {\n return undefined;\n }\n var needNewSegment = false;\n switch (pathCmd.command) {\n case 'L':\n if (Path_1.Path.getLineLength(p0.x, p0.y, pathCmd.points[0], pathCmd.points[1]) > glyphWidth) {\n p1 = Path_1.Path.getPointOnLine(glyphWidth, p0.x, p0.y, pathCmd.points[0], pathCmd.points[1], p0.x, p0.y);\n }\n else {\n pathCmd = undefined;\n }\n break;\n case 'A':\n var start = pathCmd.points[4];\n var dTheta = pathCmd.points[5];\n var end = pathCmd.points[4] + dTheta;\n if (currentT === 0) {\n currentT = start + 0.00000001;\n }\n else if (glyphWidth > currLen) {\n currentT += ((Math.PI / 180.0) * dTheta) / Math.abs(dTheta);\n }\n else {\n currentT -= ((Math.PI / 360.0) * dTheta) / Math.abs(dTheta);\n }\n if ((dTheta < 0 && currentT < end) ||\n (dTheta >= 0 && currentT > end)) {\n currentT = end;\n needNewSegment = true;\n }\n p1 = Path_1.Path.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\n break;\n case 'C':\n if (currentT === 0) {\n if (glyphWidth > pathCmd.pathLength) {\n currentT = 0.00000001;\n }\n else {\n currentT = glyphWidth / pathCmd.pathLength;\n }\n }\n else if (glyphWidth > currLen) {\n currentT += (glyphWidth - currLen) / pathCmd.pathLength / 2;\n }\n else {\n currentT = Math.max(currentT - (currLen - glyphWidth) / pathCmd.pathLength / 2, 0);\n }\n if (currentT > 1.0) {\n currentT = 1.0;\n needNewSegment = true;\n }\n p1 = Path_1.Path.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\n break;\n case 'Q':\n if (currentT === 0) {\n currentT = glyphWidth / pathCmd.pathLength;\n }\n else if (glyphWidth > currLen) {\n currentT += (glyphWidth - currLen) / pathCmd.pathLength;\n }\n else {\n currentT -= (currLen - glyphWidth) / pathCmd.pathLength;\n }\n if (currentT > 1.0) {\n currentT = 1.0;\n needNewSegment = true;\n }\n p1 = Path_1.Path.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\n break;\n }\n if (p1 !== undefined) {\n currLen = Path_1.Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\n }\n if (needNewSegment) {\n needNewSegment = false;\n pathCmd = undefined;\n }\n }\n };\n var testChar = 'C';\n var glyphWidth = that._getTextSize(testChar).width + letterSpacing;\n var lettersInOffset = offset / glyphWidth - 1;\n for (var k = 0; k < lettersInOffset; k++) {\n findSegmentToFitCharacter(testChar);\n if (p0 === undefined || p1 === undefined) {\n break;\n }\n p0 = p1;\n }\n for (var i = 0; i < charArr.length; i++) {\n findSegmentToFitCharacter(charArr[i]);\n if (p0 === undefined || p1 === undefined) {\n break;\n }\n var width = Path_1.Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\n var kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n p0.x += kern;\n p1.x += kern;\n this.textWidth += kern;\n var midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, p0.x, p0.y, p1.x, p1.y);\n var rotation = Math.atan2(p1.y - p0.y, p1.x - p0.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: p0,\n p1: p1,\n });\n p0 = p1;\n }\n };\n TextPath.prototype.getSelfRect = function () {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n var points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n var minX = points[0] || 0;\n var maxX = points[0] || 0;\n var minY = points[1] || 0;\n var maxY = points[1] || 0;\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n var fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n };\n return TextPath;\n}(Shape_1.Shape));\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\nGlobal_1._registerNode(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\nUtil_1.Collection.mapMethods(TextPath);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Ellipse = (function (_super) {\n __extends(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype._sceneFunc = function (context) {\n var rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n };\n Ellipse.prototype.getWidth = function () {\n return this.radiusX() * 2;\n };\n Ellipse.prototype.getHeight = function () {\n return this.radiusY() * 2;\n };\n Ellipse.prototype.setWidth = function (width) {\n this.radiusX(width / 2);\n };\n Ellipse.prototype.setHeight = function (height) {\n this.radiusY(height / 2);\n };\n return Ellipse;\n}(Shape_1.Shape));\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\nGlobal_1._registerNode(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(Ellipse);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = exports.stringToArray = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Global_1 = require(\"../Global\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_2 = require(\"../Global\");\nfunction stringToArray(string) {\n return Array.from(string);\n}\nexports.stringToArray = stringToArray;\nvar AUTO = 'auto', CENTER = 'center', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map(function (family) {\n family = family.trim();\n var hasSpace = family.indexOf(' ') >= 0;\n var hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = \"\\\"\" + family + \"\\\"\";\n }\n return family;\n })\n .join(', ');\n}\nvar dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nvar Text = (function (_super) {\n __extends(Text, _super);\n function Text(config) {\n var _this = _super.call(this, checkDefaultFill(config)) || this;\n _this._partialTextX = 0;\n _this._partialTextY = 0;\n for (var n = 0; n < attrChangeListLen; n++) {\n _this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, _this._setTextData);\n }\n _this._setTextData();\n return _this;\n }\n Text.prototype._sceneFunc = function (context) {\n var textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n var translateY = 0;\n var translateY = lineHeightPx / 2;\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', MIDDLE);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = n !== textArrLen - 1, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\n context.lineWidth = fontSize / 15;\n context.strokeStyle = fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\n context.lineWidth = fontSize / 15;\n context.strokeStyle = fill;\n context.stroke();\n context.restore();\n }\n if (letterSpacing !== 0 || align === JUSTIFY) {\n spacesNumber = text.split(' ').length - 1;\n var array = stringToArray(text);\n for (var li = 0; li < array.length; li++) {\n var letter = array[li];\n if (letter === ' ' && n !== textArrLen - 1 && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n };\n Text.prototype._hitFunc = function (context) {\n var width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Text.prototype.setText = function (text) {\n var str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n };\n Text.prototype.getWidth = function () {\n var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n };\n Text.prototype.getHeight = function () {\n var isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n };\n Text.prototype.getTextWidth = function () {\n return this.textWidth;\n };\n Text.prototype.getTextHeight = function () {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n };\n Text.prototype.measureSize = function (text) {\n var _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: fontSize,\n };\n };\n Text.prototype._getContextFont = function () {\n if (Global_1.Konva.UA.isIE) {\n return (this.fontStyle() +\n SPACE +\n this.fontSize() +\n PX_SPACE +\n this.fontFamily());\n }\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n };\n Text.prototype._addTextLine = function (line) {\n if (this.align() === JUSTIFY) {\n line = line.trim();\n }\n var width = this._getTextWidth(line);\n return this.textArr.push({ text: line, width: width });\n };\n Text.prototype._getTextWidth = function (text) {\n var letterSpacing = this.letterSpacing();\n var length = text.length;\n return (getDummyContext().measureText(text).width +\n (length ? letterSpacing * (length - 1) : 0));\n };\n Text.prototype._setTextData = function () {\n var lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n for (var i = 0, max = lines.length; i < max; ++i) {\n var line = lines[i];\n var lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n var low = 0, high = line.length, match = '', matchWidth = 0;\n while (low < high) {\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n if (substrWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n var wrapIndex;\n var nextChar = line[match.length];\n var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = match.length;\n }\n else {\n wrapIndex =\n Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = match.slice(0, low);\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n if (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx)) {\n var lastLine = this.textArr[this.textArr.length - 1];\n if (lastLine) {\n if (shouldAddEllipsis) {\n var haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n }\n break;\n }\n line = line.slice(low);\n line = line.trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n };\n Text.prototype.getStrokeScaleEnabled = function () {\n return true;\n };\n return Text;\n}(Shape_1.Shape));\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\nGlobal_2._registerNode(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', Validators_1.getNumberOrAutoValidator());\nFactory_1.Factory.overWriteSetter(Text, 'height', Validators_1.getNumberOrAutoValidator());\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, Validators_1.getBooleanValidator());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', Validators_1.getStringValidator());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\nUtil_1.Collection.mapMethods(Text);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Global_1 = require(\"../Global\");\nvar Validators_1 = require(\"../Validators\");\nvar Rect = (function (_super) {\n __extends(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype._sceneFunc = function (context) {\n var cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n var topLeft = 0;\n var topRight = 0;\n var bottomLeft = 0;\n var bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft = topRight = bottomLeft = bottomRight = Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n }\n context.closePath();\n context.fillStrokeShape(this);\n };\n return Rect;\n}(Shape_1.Shape));\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\nGlobal_1._registerNode(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, Validators_1.getNumberOrArrayOfNumbersValidator(4));\nUtil_1.Collection.mapMethods(Rect);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Global_1 = require(\"../Global\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_2 = require(\"../Global\");\nvar Arc = (function (_super) {\n __extends(Arc, _super);\n function Arc() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Arc.prototype._sceneFunc = function (context) {\n var angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Arc.prototype.getWidth = function () {\n return this.outerRadius() * 2;\n };\n Arc.prototype.getHeight = function () {\n return this.outerRadius() * 2;\n };\n Arc.prototype.setWidth = function (width) {\n this.outerRadius(width / 2);\n };\n Arc.prototype.setHeight = function (height) {\n this.outerRadius(height / 2);\n };\n return Arc;\n}(Shape_1.Shape));\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\nGlobal_2._registerNode(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, Validators_1.getBooleanValidator());\nUtil_1.Collection.mapMethods(Arc);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Global_1 = require(\"../Global\");\nvar Path = (function (_super) {\n __extends(Path, _super);\n function Path(config) {\n var _this = _super.call(this, config) || this;\n _this.dataArray = [];\n _this.pathLength = 0;\n _this.dataArray = Path.parsePathData(_this.data());\n _this.pathLength = 0;\n for (var i = 0; i < _this.dataArray.length; ++i) {\n _this.pathLength += _this.dataArray[i].pathLength;\n }\n _this.on('dataChange.konva', function () {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = 0;\n for (var i = 0; i < this.dataArray.length; ++i) {\n this.pathLength += this.dataArray[i].pathLength;\n }\n });\n return _this;\n }\n Path.prototype._sceneFunc = function (context) {\n var ca = this.dataArray;\n context.beginPath();\n var isClosed = false;\n for (var n = 0; n < ca.length; n++) {\n var c = ca[n].command;\n var p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n };\n Path.prototype.getSelfRect = function () {\n var points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n var start = data.points[4];\n var dTheta = data.points[5];\n var end = data.points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (var t = start - inc; t > end; t -= inc) {\n var point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (var t = start + inc; t < end; t += inc) {\n var point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (var t = 0.0; t <= 1; t += 0.01) {\n var point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: Math.round(minX),\n y: Math.round(minY),\n width: Math.round(maxX - minX),\n height: Math.round(maxY - minY),\n };\n };\n Path.prototype.getLength = function () {\n return this.pathLength;\n };\n Path.prototype.getPointAtLength = function (length) {\n var point, i = 0, ii = this.dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > this.dataArray[i].pathLength) {\n length -= this.dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n point = this.dataArray[i - 1].points.slice(-2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n if (length < 0.01) {\n point = this.dataArray[i].points.slice(0, 2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n var cp = this.dataArray[i];\n var p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier(length / cp.pathLength, cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier(length / cp.pathLength, cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n };\n Path.getLineLength = function (x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n };\n Path.getPointOnLine = function (dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n if (fromX === undefined) {\n fromX = P1x;\n }\n if (fromY === undefined) {\n fromY = P1y;\n }\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\n var run = Math.sqrt((dist * dist) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n var rise = m * run;\n var pt;\n if (P2x === P1x) {\n pt = {\n x: fromX,\n y: fromY + rise,\n };\n }\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise,\n };\n }\n else {\n var ix, iy;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\n 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 Path.getPointOnCubicBezier = function (pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n };\n Path.getPointOnQuadraticBezier = function (pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n };\n Path.getPointOnEllipticalArc = function (cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n };\n Path.parsePathData = function (data) {\n if (!data) {\n return [];\n }\n var cs = data;\n var cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n var arr = cs.split('|');\n var ca = [];\n var coords = [];\n var cpx = 0;\n var cpy = 0;\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n var match;\n for (n = 1; n < arr.length; n++) {\n var str = arr[n];\n var c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n var p = [];\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n var parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n var cmd = null;\n var points = [];\n var startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (var idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n };\n Path.calcLength = function (x, y, cmd, points) {\n var len, p1, p2, t;\n var path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n len = 0.0;\n p1 = path.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 = path.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case 'Q':\n len = 0.0;\n p1 = path.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = path.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.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 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n };\n Path.convertEndpointToCenterParameterization = function (x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n var psi = psiDeg * (Math.PI / 180.0);\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n var cxp = (f * rx * yp) / ry;\n var cyp = (f * -ry * xp) / rx;\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n var vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n var vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n var vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n };\n return Path;\n}(Shape_1.Shape));\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\nGlobal_1._registerNode(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\nUtil_1.Collection.mapMethods(Path);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Global_1 = require(\"../Global\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_2 = require(\"../Global\");\nvar Wedge = (function (_super) {\n __extends(Wedge, _super);\n function Wedge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Wedge.prototype._sceneFunc = function (context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Wedge.prototype.getWidth = function () {\n return this.radius() * 2;\n };\n Wedge.prototype.getHeight = function () {\n return this.radius() * 2;\n };\n Wedge.prototype.setWidth = function (width) {\n this.radius(width / 2);\n };\n Wedge.prototype.setHeight = function (height) {\n this.radius(height / 2);\n };\n return Wedge;\n}(Shape_1.Shape));\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\nGlobal_2._registerNode(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle'\n});\nUtil_1.Collection.mapMethods(Wedge);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Animation_1 = require(\"../Animation\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Sprite = (function (_super) {\n __extends(Sprite, _super);\n function Sprite(config) {\n var _this = _super.call(this, config) || this;\n _this._updated = true;\n _this.anim = new Animation_1.Animation(function () {\n var updated = _this._updated;\n _this._updated = false;\n return updated;\n });\n _this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n _this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n _this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n return _this;\n }\n Sprite.prototype._sceneFunc = function (context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n var offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n };\n Sprite.prototype._hitFunc = function (context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n var offset = offsets[anim];\n var ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n };\n Sprite.prototype._useBufferCanvas = function () {\n return _super.prototype._useBufferCanvas.call(this, true);\n };\n Sprite.prototype._setInterval = function () {\n var that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n };\n Sprite.prototype.start = function () {\n if (this.isRunning()) {\n return;\n }\n var layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n };\n Sprite.prototype.stop = function () {\n this.anim.stop();\n clearInterval(this.interval);\n };\n Sprite.prototype.isRunning = function () {\n return this.anim.isRunning();\n };\n Sprite.prototype._updateIndex = function () {\n var index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n };\n return Sprite;\n}(Shape_1.Shape));\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\nGlobal_1._registerNode(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, Validators_1.getNumberValidator());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\nUtil_1.Collection.mapMethods(Sprite);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar PIx2 = Math.PI * 2;\nvar Ring = (function (_super) {\n __extends(Ring, _super);\n function Ring() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ring.prototype._sceneFunc = function (context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Ring.prototype.getWidth = function () {\n return this.outerRadius() * 2;\n };\n Ring.prototype.getHeight = function () {\n return this.outerRadius() * 2;\n };\n Ring.prototype.setWidth = function (width) {\n this.outerRadius(width / 2);\n };\n Ring.prototype.setHeight = function (height) {\n this.outerRadius(height / 2);\n };\n return Ring;\n}(Shape_1.Shape));\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\nGlobal_1._registerNode(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(Ring);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Shape_1 = require(\"../Shape\");\nvar Rect_1 = require(\"./Rect\");\nvar Group_1 = require(\"../Group\");\nvar Global_1 = require(\"../Global\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_2 = require(\"../Global\");\nvar EVENTS_NAME = 'tr-konva';\nvar ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n]\n .map(function (e) { return e + (\".\" + EVENTS_NAME); })\n .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n]\n .map(function (e) { return e + (\".\" + EVENTS_NAME); })\n .join(' ');\nvar ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nvar TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad) {\n if (anchorName === 'rotater') {\n return 'crosshair';\n }\n rad += Util_1.Util._degToRad(ANGLES[anchorName] || 0);\n var angle = ((Util_1.Util._radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nvar ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nvar MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n var x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n var y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return __assign(__assign({}, shape), { rotation: shape.rotation + angleRad, x: x,\n y: y });\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n var center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n var snapped = newRotationRad;\n for (var i = 0; i < snaps.length; i++) {\n var angle = Global_1.Konva.getAngle(snaps[i]);\n var absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n var dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nvar Transformer = (function (_super) {\n __extends(Transformer, _super);\n function Transformer(config) {\n var _this = _super.call(this, config) || this;\n _this._transforming = false;\n _this._createElements();\n _this._handleMouseMove = _this._handleMouseMove.bind(_this);\n _this._handleMouseUp = _this._handleMouseUp.bind(_this);\n _this.update = _this.update.bind(_this);\n _this.on(ATTR_CHANGE_LIST, _this.update);\n if (_this.getNode()) {\n _this.update();\n }\n return _this;\n }\n Transformer.prototype.attachTo = function (node) {\n this.setNode(node);\n return this;\n };\n Transformer.prototype.setNode = function (node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n };\n Transformer.prototype.getNode = function () {\n return this._nodes && this._nodes[0];\n };\n Transformer.prototype.setNodes = function (nodes) {\n var _this = this;\n if (nodes === void 0) { nodes = []; }\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n this._nodes = nodes;\n if (nodes.length === 1) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach(function (node) {\n var additionalEvents = node._attrsAffectingSize\n .map(function (prop) { return prop + 'Change.' + EVENTS_NAME; })\n .join(' ');\n var onChange = function () {\n if (_this.nodes().length === 1) {\n _this.rotation(_this.nodes()[0].getAbsoluteRotation());\n }\n _this._resetTransformCache();\n if (!_this._transforming && !_this.isDragging()) {\n _this.update();\n }\n };\n node.on(additionalEvents, onChange);\n node.on(TRANSFORM_CHANGE_STR, onChange);\n node.on(\"_clearTransformCache.\" + EVENTS_NAME, onChange);\n node.on(\"xChange.\" + EVENTS_NAME + \" yChange.\" + EVENTS_NAME, onChange);\n _this._proxyDrag(node);\n });\n this._resetTransformCache();\n var elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n };\n Transformer.prototype._proxyDrag = function (node) {\n var _this = this;\n var lastPos;\n node.on(\"dragstart.\" + EVENTS_NAME, function (e) {\n lastPos = node.getAbsolutePosition();\n if (!_this.isDragging() && node !== _this.findOne('.back')) {\n _this.startDrag(e, false);\n }\n });\n node.on(\"dragmove.\" + EVENTS_NAME, function (e) {\n if (!lastPos) {\n return;\n }\n var abs = node.getAbsolutePosition();\n var dx = abs.x - lastPos.x;\n var dy = abs.y - lastPos.y;\n _this.nodes().forEach(function (otherNode) {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n var otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n };\n Transformer.prototype.getNodes = function () {\n return this._nodes || [];\n };\n Transformer.prototype.getActiveAnchor = function () {\n return this._movingAnchorName;\n };\n Transformer.prototype.detach = function () {\n if (this._nodes) {\n this._nodes.forEach(function (node) {\n node.off('.' + EVENTS_NAME);\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n };\n Transformer.prototype._resetTransformCache = function () {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n };\n Transformer.prototype._getNodeRect = function () {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n };\n Transformer.prototype.__getNodeShape = function (node, rot, relative) {\n if (rot === void 0) { rot = this.rotation(); }\n var rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var absScale = node.getAbsoluteScale(relative);\n var absPos = node.getAbsolutePosition(relative);\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n var rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n var box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n };\n Transformer.prototype.__getNodeRect = function () {\n var _this = this;\n var node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n var totalPoints = [];\n this.nodes().map(function (node) {\n var box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: _this.ignoreStroke(),\n });\n var points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n var trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n var transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n var tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n var minX, minY, maxX, maxY;\n totalPoints.forEach(function (point) {\n var transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n var p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n };\n Transformer.prototype.getX = function () {\n return this._getNodeRect().x;\n };\n Transformer.prototype.getY = function () {\n return this._getNodeRect().y;\n };\n Transformer.prototype.getWidth = function () {\n return this._getNodeRect().width;\n };\n Transformer.prototype.getHeight = function () {\n return this._getNodeRect().height;\n };\n Transformer.prototype._createElements = function () {\n this._createBack();\n ANCHORS_NAMES.forEach(function (name) {\n this._createAnchor(name);\n }.bind(this));\n this._createAnchor('rotater');\n };\n Transformer.prototype._createAnchor = function (name) {\n var _this = this;\n var anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n var self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', function (e) {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', function (e) {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', function () {\n var rad = Global_1.Konva.getAngle(_this.rotation());\n var cursor = getCursor(name, rad);\n anchor.getStage().content.style.cursor = cursor;\n _this._cursorChange = true;\n });\n anchor.on('mouseout', function () {\n anchor.getStage().content.style.cursor = '';\n _this._cursorChange = false;\n });\n this.add(anchor);\n };\n Transformer.prototype._createBack = function () {\n var _this = this;\n var back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc: function (ctx) {\n var tr = this.getParent();\n var padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, this.width() + padding * 2, this.height() + padding * 2);\n ctx.moveTo(this.width() / 2, -padding);\n if (tr.rotateEnabled()) {\n ctx.lineTo(this.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(this.height()) - padding);\n }\n ctx.fillStrokeShape(this);\n },\n hitFunc: function (ctx, shape) {\n if (!_this.shouldOverdrawWholeArea()) {\n return;\n }\n var padding = _this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', function (e) {\n e.cancelBubble = true;\n });\n back.on('dragmove', function (e) {\n e.cancelBubble = true;\n });\n back.on('dragend', function (e) {\n e.cancelBubble = true;\n });\n };\n Transformer.prototype._handleMouseDown = function (e) {\n this._movingAnchorName = e.target.name().split(' ')[0];\n var attrs = this._getNodeRect();\n var width = attrs.width;\n var height = attrs.height;\n var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n this._transforming = true;\n var ap = e.target.getAbsolutePosition();\n var pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n this._fire('transformstart', { evt: e, target: this.getNode() });\n this._nodes.forEach(function (target) {\n target._fire('transformstart', { evt: e, target: target });\n });\n };\n Transformer.prototype._handleMouseMove = function (e) {\n var x, y, newHypotenuse;\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n var stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n var pp = stage.getPointerPosition();\n var newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n var oldAbs = anchorNode.getAbsolutePosition();\n anchorNode.setAbsolutePosition(newNodePos);\n var newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n var attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n var delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n var oldRotation = Global_1.Konva.getAngle(this.rotation());\n var newRotation = oldRotation + delta;\n var tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n var snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n var diff = snappedRot - attrs.rotation;\n var shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n var keepProportion = this.keepRatio() || e.shiftKey;\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n var topLeft = this.findOne('.top-left');\n var bottomRight = this.findOne('.bottom-right');\n var topOffsetX = topLeft.x();\n var topOffsetY = topLeft.y();\n var bottomOffsetX = this.getWidth() - bottomRight.x();\n var bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n var absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n var height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n };\n Transformer.prototype._handleMouseUp = function (e) {\n this._removeEvents(e);\n };\n Transformer.prototype.getAbsoluteTransform = function () {\n return this.getTransform();\n };\n Transformer.prototype._removeEvents = function (e) {\n if (this._transforming) {\n this._transforming = false;\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n var node = this.getNode();\n this._fire('transformend', { evt: e, target: node });\n if (node) {\n this._nodes.forEach(function (target) {\n target._fire('transformend', { evt: e, target: target });\n });\n }\n this._movingAnchorName = null;\n }\n };\n Transformer.prototype._fitNodesInto = function (newAttrs, evt) {\n var _this = this;\n var oldAttrs = this._getNodeRect();\n var minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n var allowNegativeScale = true;\n var t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n var offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n if (!allowNegativeScale) {\n this.update();\n return;\n }\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n var offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n if (!allowNegativeScale) {\n this.update();\n return;\n }\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n var offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n if (!allowNegativeScale) {\n this.update();\n return;\n }\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n var offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n if (!allowNegativeScale) {\n this.update();\n return;\n }\n }\n if (this.boundBoxFunc()) {\n var bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n var baseSize = 10000000;\n var oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n var newTr = new Util_1.Transform();\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newAttrs.width / baseSize, newAttrs.height / baseSize);\n var delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach(function (node) {\n var _a;\n var parentTransform = node.getParent().getAbsoluteTransform();\n var localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n var newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n var attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n _this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n };\n Transformer.prototype.forceUpdate = function () {\n this._resetTransformCache();\n this.update();\n };\n Transformer.prototype._batchChangeChild = function (selector, attrs) {\n var anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n };\n Transformer.prototype.update = function () {\n var _this = this;\n var _a;\n var attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n var width = attrs.width;\n var height = attrs.height;\n var enabledAnchors = this.enabledAnchors();\n var resizeEnabled = this.resizeEnabled();\n var padding = this.padding();\n var anchorSize = this.anchorSize();\n this.find('._anchor').each(function (node) {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: _this.anchorStroke(),\n strokeWidth: _this.anchorStrokeWidth(),\n fill: _this.anchorFill(),\n cornerRadius: _this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n };\n Transformer.prototype.isTransforming = function () {\n return this._transforming;\n };\n Transformer.prototype.stopTransform = function () {\n if (this._transforming) {\n this._removeEvents();\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n };\n Transformer.prototype.destroy = function () {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content.style.cursor = '';\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n };\n Transformer.prototype.toObject = function () {\n return Node_1.Node.prototype.toObject.call(this);\n };\n return Transformer;\n}(Group_1.Group));\nexports.Transformer = Transformer;\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\nGlobal_2._registerNode(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\nUtil_1.Collection.mapMethods(Transformer);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Group_1 = require(\"../Group\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nvar Label = (function (_super) {\n __extends(Label, _super);\n function Label(config) {\n var _this = _super.call(this, config) || this;\n _this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n return _this;\n }\n Label.prototype.getText = function () {\n return this.find('Text')[0];\n };\n Label.prototype.getTag = function () {\n return this.find('Tag')[0];\n };\n Label.prototype._addListeners = function (text) {\n var that = this, n;\n var func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n };\n Label.prototype.getWidth = function () {\n return this.getText().width();\n };\n Label.prototype.getHeight = function () {\n return this.getText().height();\n };\n Label.prototype._sync = function () {\n var text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n };\n return Label;\n}(Group_1.Group));\nexports.Label = Label;\nLabel.prototype.className = 'Label';\nGlobal_1._registerNode(Label);\nUtil_1.Collection.mapMethods(Label);\nvar Tag = (function (_super) {\n __extends(Tag, _super);\n function Tag() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Tag.prototype._sceneFunc = function (context) {\n var width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n var topLeft = 0;\n var topRight = 0;\n var bottomLeft = 0;\n var bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft = topRight = bottomLeft = bottomRight = Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n };\n Tag.prototype.getSelfRect = function () {\n var x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n };\n return Tag;\n}(Shape_1.Shape));\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\nGlobal_1._registerNode(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, Validators_1.getNumberOrArrayOfNumbersValidator(4));\nUtil_1.Collection.mapMethods(Tag);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Star = (function (_super) {\n __extends(Star, _super);\n function Star() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Star.prototype._sceneFunc = function (context) {\n var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (var n = 1; n < numPoints * 2; n++) {\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\n var x = radius * Math.sin((n * Math.PI) / numPoints);\n var y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n };\n Star.prototype.getWidth = function () {\n return this.outerRadius() * 2;\n };\n Star.prototype.getHeight = function () {\n return this.outerRadius() * 2;\n };\n Star.prototype.setWidth = function (width) {\n this.outerRadius(width / 2);\n };\n Star.prototype.setHeight = function (height) {\n this.outerRadius(height / 2);\n };\n return Star;\n}(Shape_1.Shape));\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\nGlobal_1._registerNode(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, Validators_1.getNumberValidator());\nUtil_1.Collection.mapMethods(Star);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nvar Util_1 = require(\"../Util\");\nvar Factory_1 = require(\"../Factory\");\nvar Shape_1 = require(\"../Shape\");\nvar Validators_1 = require(\"../Validators\");\nvar Global_1 = require(\"../Global\");\nvar Line = (function (_super) {\n __extends(Line, _super);\n function Line(config) {\n var _this = _super.call(this, config) || this;\n _this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n return _this;\n }\n Line.prototype._sceneFunc = function (context) {\n var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n };\n Line.prototype.getTensionPoints = function () {\n return this._getCache('tensionPoints', this._getTensionPoints);\n };\n Line.prototype._getTensionPoints = function () {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return Util_1.Util._expandPoints(this.points(), this.tension());\n }\n };\n Line.prototype._getTensionPointsClosed = function () {\n var p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = Util_1.Util._getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = Util_1.Util._getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = Util_1.Util._expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1]\n ]);\n return tp;\n };\n Line.prototype.getWidth = function () {\n return this.getSelfRect().width;\n };\n Line.prototype.getHeight = function () {\n return this.getSelfRect().height;\n };\n Line.prototype.getSelfRect = function () {\n var points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0\n };\n }\n if (this.tension() !== 0) {\n points = __spreadArrays([\n points[0],\n points[1]\n ], this._getTensionPoints(), [\n points[points.length - 2],\n points[points.length - 1]\n ]);\n }\n else {\n points = this.points();\n }\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n };\n return Line;\n}(Shape_1.Shape));\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\nGlobal_1._registerNode(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], Validators_1.getNumberArrayValidator());\nUtil_1.Collection.mapMethods(Line);\n"],"sourceRoot":""}