{"version":3,"sources":["webpack:///./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack:///./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack:///./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack:///./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack:///./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack:///./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack:///./node_modules/echarts/lib/chart/helper/LinePath.js","webpack:///./node_modules/echarts/lib/chart/helper/Line.js","webpack:///./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js"],"names":["getAutoCurvenessParams","seriesModel","get","createCurveness","appendLength","autoCurvenessParmas","length","curvenessList","__curvenessList","len","i","push","getKeyOfEdges","n1","n2","source","id","dataIndex","join","target","uid","getOppositeKey","key","keys","split","getEdgeFromMap","edge","node1","node2","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","edgeMap","initCurvenessList","createEdgeMapForCurveness","index","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","lineStyle","curKey","parityCorrection","oppositeKey","resValue","opt","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","coordSysDims","dim","dimInfo","name","axisModel","axisMap","axisType","type","getDimensionsInfo","dimensions","slice","firstCategoryDimIndex","hasNameEncode","useEncodeDefaulter","dimInfoList","coordDimensions","generateCoord","encodeDefaulter","dimIndex","coordDim","categoryAxisModel","categoryAxisMap","ordinalMeta","getOrdinalMeta","createInvertedIndices","otherDims","itemName","stackCalculationInfo","list","setCalculationInfo","dimValueGetter","sourceFormat","sampleItem","data","firstDataNotNull","isNeedCompleteOrdinalData","itemOpt","dimName","this","defaultDimValueGetter","hasItemOption","initData","getDefaultLabel","labelDims","mapDimensionsAll","rawVal","vals","getDefaultInterpolatedLabel","interpolatedValue","getDimensionInfo","createRenderPlanner","inner","fields","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","progressive","createGraphFromNodeEdge","nodes","edges","directed","beforeLink","graph","addNode","linkNameList","validEdges","linkCount","link","addEdge","nodeData","coordSys","coordSysCtor","concat","dimensionNames","edgeData","mainData","struct","structAttr","datas","node","datasAttr","update","createClipPath","hasAnimation","done","during","polar","sectorArea","getArea","r0","r","clipPath","shape","cx","cy","startAngle","endAngle","clockwise","getBaseAxis","createPolarClipPath","cartesian","rect","x","y","width","height","lineWidth","Math","floor","round","baseAxis","isHorizontal","isAxisInversed","inverse","duringCb","percent","createGridClipPath","straightLineProto","prototype","bezierCurveProto","StraightLineShape","x1","y1","x2","y2","_super","CurveShape","apply","arguments","isStraightLine","isNaN","cpx1","cpy1","ECLinePath","opts","_this","call","getDefaultStyle","stroke","fill","getDefaultShape","buildPath","ctx","pointAt","t","tangentAt","p","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","createSymbol","lineData","idx","symbolType","getItemVisual","symbolSize","symbolRotate","symbolOffset","symbolKeepAspect","symbolSizeArr","symbolOffsetArr","symbolPath","__specifiedRotation","PI","setLinePoints","targetShape","points","cp1","NaN","Line","seriesScope","_createLine","hostModel","line","subPixelOptimize","createLine","getItemLayout","graphic","add","symbol","_updateCommonStl","updateData","childOfName","linePoints","remove","getLinePath","childAt","emphasisLineStyle","blurLineStyle","selectLineStyle","labelStatesModels","itemModel","getItemModel","getModel","getLineStyle","visualColor","useStyle","style","strokeNoScale","ensureState","setColor","opacity","stateName","lineState","getState","lineStateStyle","state","stateStyle","__isEmptyBrush","markRedraw","getRawValue","labelDataIndex","labelFetcher","getFormattedLabel","dataType","inheritColor","defaultOpacity","defaultText","getName","isFinite","label","getTextContent","labelNormalModel","normal","__align","align","__verticalAlign","verticalAlign","__position","distance","__labelDistance","setTextConfig","position","local","inside","highlight","downplay","updateLayout","linePath","dirty","beforeUpdate","symbolFrom","symbolTo","ignore","invScale","parentNode","parent","scaleX","__dirty","fromPos","toPos","d","vector","setPosition","setSymbolRotation","scaleY","originX","originY","textAlign","textVerticalAlign","distanceX","distanceY","halfPercent","tangent","n","cp","dir","rotation","atan2","dy","setStyle","specifiedRotation","attr","LineDraw","LineCtor","group","_LineCtor","isPersistent","oldLineData","_lineData","removeAll","makeSeriesScope","diff","_doAdd","newIdx","oldIdx","_doUpdate","getItemGraphicEl","execute","eachItemGraphicEl","el","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","isGroup","animators","isEffectObject","incremental","hoverLayer","start","end","lineNeedsDraw","traverse","setItemGraphicEl","newLineData","itemEl","isPointNaN","pt","pts","driftSymbol","dx","drift","Symbol","_createSymbol","keepAspect","z2","culling","_symbolType","stopSymbolAnimation","toLastFrame","stopAnimation","getSymbolPath","setZ","zlevel","z","setDraggable","draggable","cursor","silent","getSymbolSize","isInit","disableAnimation","_updateCommon","_sizeX","_sizeY","_seriesModel","emphasisItemStyle","blurItemStyle","selectItemStyle","focus","blurScope","hoverScale","cursorStyle","emphasisModel","getItemStyle","getShallow","symbolStyle","pathStyle","image","decal","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","emphasisState","scaleRatio","max","setSymbolScale","scale","fadeOut","cb","animationOpt","animation","fadeLabel","textContent","removeOpt","removeTextContent","symbolNeedsDraw","point","isIgnore","clipShape","contain","normalizeUpdateOpt","SymbolDraw","SymbolCtor","_SymbolCtor","oldData","_data","symbolUpdateOpt","getSymbolPoint","symbolEl","_getSymbolPoint","enableAnimation"],"mappings":"6MAoDIA,EAAyB,SAAUC,GACrC,OAAOA,EAAYC,IAAI,kBAAoB,MAUzCC,EAAkB,SAAUF,EAAaG,GAC3C,IAAIC,EAAsBL,EAAuBC,GAC7CK,EAAS,GACTC,EAAgB,GAEpB,GAAmC,iBAAxBF,EACTC,EAASD,OACJ,GAAI,IAAeA,GAExB,YADAJ,EAAYO,gBAAkBH,GAK5BD,EAAeE,IACjBA,EAASF,GAIX,IAAIK,EAAMH,EAAS,EAAIA,EAAS,EAAIA,EAAS,EAC7CC,EAAgB,GAEhB,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAKC,IACvBH,EAAcI,MAAMD,EAAI,EAAIA,EAAI,EAAIA,GAAK,IAAMA,EAAI,GAAK,EAAI,IAG9DT,EAAYO,gBAAkBD,GAW5BK,EAAgB,SAAUC,EAAIC,EAAIb,GACpC,IAAIc,OAAS,CAACF,EAAGG,GAAIH,EAAGI,WAAWC,KAAK,KACpCC,EAAS,CAACL,EAAGE,GAAIF,EAAGG,WAAWC,KAAK,KACxC,MAAO,CAACjB,EAAYmB,IAAKL,OAAQI,GAAQD,KAzDvB,WAkEhBG,EAAiB,SAAUC,GAC7B,IAAIC,EAAOD,EAAIE,MAnEG,UAoElB,MAAO,CAACD,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAIL,KApEjB,WA6EhBO,EAAiB,SAAUC,EAAMzB,GACnC,IAAIqB,EAAMV,EAAcc,EAAKC,MAAOD,EAAKE,MAAO3B,GAChD,OAAOA,EAAY4B,UAAUP,IAU3BQ,EAA6B,SAAUJ,EAAMzB,GAG/C,OAFU8B,EAAwBnB,EAAcc,EAAKC,MAAOD,EAAKE,MAAO3B,GAAcA,GAC3E8B,EAAwBnB,EAAcc,EAAKE,MAAOF,EAAKC,MAAO1B,GAAcA,IASrF8B,EAA0B,SAAUT,EAAKrB,GAC3C,IAAI+B,EAAU/B,EAAY4B,UAC1B,OAAOG,EAAQV,GAAOU,EAAQV,GAAKhB,OAAS,GASvC,SAAS2B,EAAkBhC,GAC3BD,EAAuBC,KAI5BA,EAAYO,gBAAkB,GAC9BP,EAAY4B,UAAY,GAExB1B,EAAgBF,IAUX,SAASiC,EAA0BrB,EAAIC,EAAIb,EAAakC,GAC7D,GAAKnC,EAAuBC,GAA5B,CAIA,IAAIqB,EAAMV,EAAcC,EAAIC,EAAIb,GAC5B+B,EAAU/B,EAAY4B,UACtBO,EAAgBJ,EAAQX,EAAeC,IAEvCU,EAAQV,KAASc,EACnBJ,EAAQV,GAAKe,WAAY,EAChBD,GAAiBJ,EAAQV,KAClCc,EAAcC,WAAY,EAC1BL,EAAQV,GAAKe,WAAY,GAG3BL,EAAQV,GAAOU,EAAQV,IAAQ,GAC/BU,EAAQV,GAAKX,KAAKwB,IASb,SAASG,EAAoBZ,EAAMzB,EAAakC,EAAOI,GAC5D,IAAIC,EAAsBxC,EAAuBC,GAC7CwC,EAAe,IAAeD,GAElC,IAAKA,EACH,OAAO,KAGT,IAAIE,EAAYjB,EAAeC,EAAMzB,GAErC,IAAKyC,EACH,OAAO,KAKT,IAFA,IAAIC,GAAa,EAERjC,EAAI,EAAGA,EAAIgC,EAAUpC,OAAQI,IACpC,GAAIgC,EAAUhC,KAAOyB,EAAO,CAC1BQ,EAAYjC,EACZ,MAKJ,IAAIkC,EAAWd,EAA2BJ,EAAMzB,GAChDE,EAAgBF,EAAa2C,GAC7BlB,EAAKmB,UAAYnB,EAAKmB,WAAa,GAEnC,IAAIC,EAASlC,EAAcc,EAAKC,MAAOD,EAAKE,MAAO3B,GAC/CM,EAAgBN,EAAYO,gBAE5BuC,EAAmBN,EAAe,EAAIG,EAAW,EAAI,EAAI,EAE7D,GAAKF,EAAUL,UAqBb,OAAO9B,EAAcwC,EAAmBJ,GAnBxC,IAAIK,EAAc3B,EAAeyB,GAC7BrC,EAAMsB,EAAwBiB,EAAa/C,GAC3CgD,EAAW1C,EAAcoC,EAAYlC,EAAMsC,GAE/C,OAAIR,EAEEE,EACED,GAAkD,IAA3BA,EAAoB,IACrC/B,EAAMsC,GAAoB,EAAIE,GAAYA,IAEzCxC,EAAM,EAAI,EAAI,GAAKsC,GAAoB,EAAIE,GAAYA,GAG1DxC,EAAMsC,GAAoB,EAAIE,GAAYA,EAG7C1C,EAAcoC,EAAYlC,EAAMsC,K,iICrG9B,IA/Ff,SAA6BhC,OAAQd,EAAaiD,GAChDA,EAAMA,GAAO,GAER,YAAiBnC,UACpBA,OAAS,YAAiCA,SAG5C,IAGIoC,EAHAC,EAAenD,EAAYC,IAAI,oBAC/BmD,EAAqB,IAAiBnD,IAAIkD,GAC1CE,EAAe,YAAwBrD,GAGvCqD,GAAgBA,EAAaC,eAC/BJ,EAAkB,IAAWG,EAAaC,cAAc,SAAUC,GAChE,IAAIC,EAAU,CACZC,KAAMF,GAEJG,EAAYL,EAAaM,QAAQ1D,IAAIsD,GAEzC,GAAIG,EAAW,CACb,IAAIE,EAAWF,EAAUzD,IAAI,QAC7BuD,EAAQK,KAAO,YAAuBD,GAGxC,OAAOJ,MAINN,IAEHA,EAAkBE,IAAuBA,EAAmBU,kBAAoBV,EAAmBU,oBAAsBV,EAAmBW,WAAWC,UAAY,CAAC,IAAK,MAG3K,IAMIC,EACAC,EAPAC,EAAqBlB,EAAIkB,mBACzBC,EAAc,YAAiBtD,OAAQ,CACzCuD,gBAAiBnB,EACjBoB,cAAerB,EAAIqB,cACnBC,gBAAiB,IAAkBJ,GAAsBA,EAAqBA,EAAqB,IAAa,IAAiCjB,EAAiBlD,GAAe,OAInLqD,GAAgB,IAAYe,GAAa,SAAUZ,EAASgB,GAC1D,IAAIC,EAAWjB,EAAQiB,SACnBC,EAAoBrB,EAAasB,gBAAgB1E,IAAIwE,GAErDC,IAC2B,MAAzBT,IACFA,EAAwBO,GAG1BhB,EAAQoB,YAAcF,EAAkBG,iBAEpC5B,EAAI6B,wBACNtB,EAAQsB,uBAAwB,IAIF,MAA9BtB,EAAQuB,UAAUC,WACpBd,GAAgB,MAIfA,GAA0C,MAAzBD,IACpBG,EAAYH,GAAuBc,UAAUC,SAAW,GAG1D,IAAIC,EAAuB,YAAgBjF,EAAaoE,GACpDc,EAAO,IAAI,IAAKd,EAAapE,GACjCkF,EAAKC,mBAAmBF,GACxB,IAAIG,EAA0C,MAAzBnB,GASvB,SAAmCnD,QACjC,GAAIA,OAAOuE,eAAiB,IAAwB,CAClD,IAAIC,EAKR,SAA0BC,MACxB,IAAI9E,EAAI,EAER,KAAOA,EAAI8E,KAAKlF,QAAqB,MAAXkF,KAAK9E,IAC7BA,IAGF,OAAO8E,KAAK9E,GAZO+E,CAAiB1E,OAAOyE,MAAQ,IACjD,OAAqB,MAAdD,IAAuB,IAAe,YAAiBA,KAZVG,CAA0B3E,QAAU,SAAU4E,EAASC,EAAS3E,EAAWwD,GAE/H,OAAOA,IAAaP,EAAwBjD,EAAY4E,KAAKC,sBAAsBH,EAASC,EAAS3E,EAAWwD,IAC9G,KAGJ,OAFAU,EAAKY,eAAgB,EACrBZ,EAAKa,SAASjF,OAAQ,KAAMsE,GACrBF,I,wHCjFF,SAASc,EAAgBT,KAAMvE,GACpC,IAAIiF,EAAYV,KAAKW,iBAAiB,kBAClC1F,EAAMyF,EAAU5F,OAEpB,GAAY,IAARG,EAAW,CACb,IAAI2F,EAAS,YAAiBZ,KAAMvE,EAAWiF,EAAU,IACzD,OAAiB,MAAVE,EAAiBA,EAAS,GAAK,KACjC,GAAI3F,EAAK,CAGd,IAFA,IAAI4F,EAAO,GAEF3F,EAAI,EAAGA,EAAIwF,EAAU5F,OAAQI,IACpC2F,EAAK1F,KAAK,YAAiB6E,KAAMvE,EAAWiF,EAAUxF,KAGxD,OAAO2F,EAAKnF,KAAK,MAGd,SAASoF,EAA4Bd,KAAMe,GAChD,IAAIL,EAAYV,KAAKW,iBAAiB,kBAEtC,IAAK,YAAQI,GACX,OAAOA,EAAoB,GAK7B,IAFA,IAAIF,EAAO,GAEF3F,EAAI,EAAGA,EAAIwF,EAAU5F,OAAQI,IAAK,CACzC,IAAI+C,EAAU+B,KAAKgB,iBAAiBN,EAAUxF,IAE1C+C,GACF4C,EAAK1F,KAAK4F,EAAkB9C,EAAQtB,QAIxC,OAAOkE,EAAKnF,KAAK,O,8ECnCJ,SAASuF,IACtB,IAAIC,EAAQ,cACZ,OAAO,SAAUzG,GACf,IAAI0G,EAASD,EAAMzG,GACf2G,EAAkB3G,EAAY2G,gBAC9BC,IAAkBF,EAAOG,MACzBC,IAAwBJ,EAAOK,kBAI/BF,EAAQH,EAAOG,SAAWF,IAAmBA,EAAgBE,OAC7DG,EAAcN,EAAOK,qBAAuBJ,IAAmBA,EAAgBI,mBACnF,QAAUH,IAAkBC,GAASC,IAAwBE,IAAgB,W,2ICTlE,SAASC,EAAwBC,EAAOC,EAAOnH,EAAaoH,EAAUC,GAKnF,IAFA,IAAIC,EAAQ,IAAI,IAAMF,GAEb3G,EAAI,EAAGA,EAAIyG,EAAM7G,OAAQI,IAChC6G,EAAMC,QAAQ,IACdL,EAAMzG,GAAGM,GAAImG,EAAMzG,GAAGgD,KAAMhD,GAAIA,GAGlC,IAAI+G,EAAe,GACfC,EAAa,GACbC,EAAY,EAEhB,IAASjH,EAAI,EAAGA,EAAI0G,EAAM9G,OAAQI,IAAK,CACrC,IAAIkH,KAAOR,EAAM1G,GACbK,OAAS6G,KAAK7G,OACdI,EAASyG,KAAKzG,OAEdoG,EAAMM,QAAQ9G,OAAQI,EAAQwG,KAChCD,EAAW/G,KAAKiH,MAChBH,EAAa9G,KAAK,IAAgB,YAAoBiH,KAAK5G,GAAI,MAAOD,OAAS,MAAQI,IACvFwG,KAIJ,IACIG,EADAC,EAAW9H,EAAYC,IAAI,oBAG/B,GAAiB,gBAAb6H,GAA2C,UAAbA,EAChCD,EAAW,YAAoBX,EAAOlH,OACjC,CACL,IAAI+H,EAAe,IAAiB9H,IAAI6H,GACpCzD,EAAkB0D,GAAeA,EAAahE,YAAmB,GAIjE,IAAeM,EAAiB,SAAW,GAC7CA,EAAgB2D,OAAO,CAAC,UAG1B,IAAIC,EAAiB,YAAiBf,EAAO,CAC3C7C,gBAAiBA,KAEnBwD,EAAW,IAAI,IAAKI,EAAgBjI,IAC3B+F,SAASmB,GAGpB,IAAIgB,EAAW,IAAI,IAAK,CAAC,SAAUlI,GAkBnC,OAjBAkI,EAASnC,SAAS0B,EAAYD,GAC9BH,GAAcA,EAAWQ,EAAUK,GACnC,YAAS,CACPC,SAAUN,EACVO,OAAQd,EACRe,WAAY,QACZC,MAAO,CACLC,KAAMV,EACNpG,KAAMyG,GAERM,UAAW,CACTD,KAAM,OACN9G,KAAM,cAIV6F,EAAMmB,SACCnB,I,uGCyBT,SAASoB,EAAeZ,EAAUa,EAAc3I,EAAa4I,EAAMC,GACjE,OAAKf,EAEwB,UAAlBA,EAASjE,KAxCtB,SAA6BiF,EAAOH,EAAc3I,GAChD,IAAI+I,EAAaD,EAAME,UAEnBC,EAAK,YAAMF,EAAWE,GAAI,GAC1BC,EAAI,YAAMH,EAAWG,EAAG,GACxBC,EAAW,IAAI,IAAe,CAChCC,MAAO,CACLC,GAAI,YAAMP,EAAMO,GAAI,GACpBC,GAAI,YAAMR,EAAMQ,GAAI,GACpBL,GAAIA,EACJC,EAAGA,EACHK,WAAYR,EAAWQ,WACvBC,SAAUT,EAAWS,SACrBC,UAAWV,EAAWU,aAqB1B,OAjBId,IACyC,UAA5BG,EAAMY,cAAcnG,IAGjC4F,EAASC,MAAMI,SAAWT,EAAWQ,WAErCJ,EAASC,MAAMF,EAAID,EAGrB,YAAkBE,EAAU,CAC1BC,MAAO,CACLI,SAAUT,EAAWS,SACrBN,EAAGA,IAEJlJ,IAGEmJ,EAOEQ,CAAoB7B,EAAUa,EAAc3I,GACxB,gBAAlB8H,EAASjE,KArGtB,SAA4B+F,EAAWjB,EAAc3I,EAAa4I,EAAMC,GACtE,IAAIgB,KAAOD,EAAUZ,UACjBc,EAAID,KAAKC,EACTC,EAAIF,KAAKE,EACTC,EAAQH,KAAKG,MACbC,EAASJ,KAAKI,OACdC,EAAYlK,EAAYC,IAAI,CAAC,YAAa,WAAa,EAE3D6J,GAAKI,EAAY,EACjBH,GAAKG,EAAY,EACjBF,GAASE,EACTD,GAAUC,EAEVJ,EAAIK,KAAKC,MAAMN,GACfE,EAAQG,KAAKE,MAAML,GACnB,IAAIb,EAAW,IAAI,IAAa,CAC9BC,MAAO,CACLU,EAAGA,EACHC,EAAGA,EACHC,MAAOA,EACPC,OAAQA,KAIZ,GAAItB,EAAc,CAChB,IAAI2B,EAAWV,EAAUF,cACrBa,EAAeD,EAASC,eACxBC,EAAiBF,EAASG,QAE1BF,GACEC,IACFrB,EAASC,MAAMU,GAAKE,GAGtBb,EAASC,MAAMY,MAAQ,IAElBQ,IACHrB,EAASC,MAAMW,GAAKE,GAGtBd,EAASC,MAAMa,OAAS,GAG1B,IAAIS,EAA6B,mBAAX7B,EAAwB,SAAU8B,GACtD9B,EAAO8B,EAASxB,IACd,KACJ,YAAkBA,EAAU,CAC1BC,MAAO,CACLY,MAAOA,EACPC,OAAQA,EACRH,EAAGA,EACHC,EAAGA,IAEJ/J,EAAa,KAAM4I,EAAM8B,GAG9B,OAAOvB,EA8CEyB,CAAmB9C,EAAUa,EAAc3I,EAAa4I,EAAMC,GAGhE,KAPE,O,qGC9FPgC,EAAoB,IAAaC,UACjCC,EAAmB,IAAoBD,UAEvCE,EAGF,WAEEpF,KAAKqF,GAAK,EACVrF,KAAKsF,GAAK,EAEVtF,KAAKuF,GAAK,EACVvF,KAAKwF,GAAK,EACVxF,KAAK+E,QAAU,IAQnB,SAAUU,GAGR,SAASC,IACP,OAAkB,OAAXD,GAAmBA,EAAOE,MAAM3F,KAAM4F,YAAc5F,KAH7D,YAAU0F,EAAYD,GADxB,CAQEL,GAEF,SAASS,EAAerC,GACtB,OAAOsC,OAAOtC,EAAMuC,OAASD,OAAOtC,EAAMwC,MAG5C,IAgDe,EA9Cf,SAAUP,GAGR,SAASQ,EAAWC,GAClB,IAAIC,EAAQV,EAAOW,KAAKpG,KAAMkG,IAASlG,KAGvC,OADAmG,EAAMlI,KAAO,UACNkI,EAoCT,OA1CA,YAAUF,EAAYR,GAStBQ,EAAWf,UAAUmB,gBAAkB,WACrC,MAAO,CACLC,OAAQ,OACRC,KAAM,OAIVN,EAAWf,UAAUsB,gBAAkB,WACrC,OAAO,IAAIpB,GAGba,EAAWf,UAAUuB,UAAY,SAAUC,EAAKlD,GAC1CqC,EAAerC,GACjByB,EAAkBwB,UAAUL,KAAKpG,KAAM0G,EAAKlD,GAE5C2B,EAAiBsB,UAAUL,KAAKpG,KAAM0G,EAAKlD,IAI/CyC,EAAWf,UAAUyB,QAAU,SAAUC,GACvC,OAAIf,EAAe7F,KAAKwD,OACfyB,EAAkB0B,QAAQP,KAAKpG,KAAM4G,GAErCzB,EAAiBwB,QAAQP,KAAKpG,KAAM4G,IAI/CX,EAAWf,UAAU2B,UAAY,SAAUD,GACzC,IAAIpD,EAAQxD,KAAKwD,MACbsD,EAAIjB,EAAerC,GAAS,CAACA,EAAM+B,GAAK/B,EAAM6B,GAAI7B,EAAMgC,GAAKhC,EAAM8B,IAAMH,EAAiB0B,UAAUT,KAAKpG,KAAM4G,GACnH,OAAO,IAAeE,EAAGA,IAGpBb,EA3CT,CA4CE,K,+BC/EEc,EAAoB,CAAC,aAAc,YAEvC,SAASC,EAAkBC,GACzB,MAAO,IAAMA,EAAiB,OAOhC,SAASC,EAAarJ,EAAMsJ,EAAUC,GACpC,IAAIC,EAAaF,EAASG,cAAcF,EAAKvJ,GAE7C,GAAKwJ,GAA6B,SAAfA,EAAnB,CAIA,IAAIE,EAAaJ,EAASG,cAAcF,EAAKvJ,EAAO,QAChD2J,EAAeL,EAASG,cAAcF,EAAKvJ,EAAO,UAClD4J,EAAeN,EAASG,cAAcF,EAAKvJ,EAAO,WAAa,EAC/D6J,EAAmBP,EAASG,cAAcF,EAAKvJ,EAAO,cACtD8J,EAAgB,YAAQJ,GAAcA,EAAa,CAACA,EAAYA,GAChEK,EAAkB,YAAQH,GAAgBA,EAAe,CAACA,EAAcA,GAC5EG,EAAgB,GAAK,YAAaA,EAAgB,GAAID,EAAc,IACpEC,EAAgB,GAAK,YAAa,YAAUA,EAAgB,GAAIA,EAAgB,IAAKD,EAAc,IACnG,IAAIE,EAAa,IAAwBR,GAAaM,EAAc,GAAK,EAAIC,EAAgB,IAAKD,EAAc,GAAK,EAAIC,EAAgB,GAAID,EAAc,GAAIA,EAAc,GAAI,KAAMD,GAGvL,OAFAG,EAAWC,oBAAsC,MAAhBN,GAAwB1B,MAAM0B,QAAgB,GAAUA,EAAejD,KAAKwD,GAAK,KAAO,EACzHF,EAAWhK,KAAOA,EACXgK,GAYT,SAASG,EAAcC,EAAaC,GAClCD,EAAY5C,GAAK6C,EAAO,GAAG,GAC3BD,EAAY3C,GAAK4C,EAAO,GAAG,GAC3BD,EAAY1C,GAAK2C,EAAO,GAAG,GAC3BD,EAAYzC,GAAK0C,EAAO,GAAG,GAC3BD,EAAYlD,QAAU,EACtB,IAAIoD,EAAMD,EAAO,GAEbC,GACFF,EAAYlC,KAAOoC,EAAI,GACvBF,EAAYjC,KAAOmC,EAAI,KAEvBF,EAAYlC,KAAOqC,IACnBH,EAAYjC,KAAOoC,KAIvB,IAkWe,EAhWf,SAAU3C,GAGR,SAAS4C,EAAKlB,EAAUC,EAAKkB,GAC3B,IAAInC,EAAQV,EAAOW,KAAKpG,OAASA,KAIjC,OAFAmG,EAAMoC,YAAYpB,EAAUC,EAAKkB,GAE1BnC,EAqVT,OA5VA,YAAUkC,EAAM5C,GAUhB4C,EAAKnD,UAAUqD,YAAc,SAAUpB,EAAUC,EAAKkB,GACpD,IAAIlO,EAAc+M,EAASqB,UAEvBC,KA1CR,SAAoBP,GAClB,IAAIO,KAAO,IAAI,EAAW,CACxB5K,KAAM,OACN6K,kBAAkB,IAGpB,OADAV,EAAcS,KAAKjF,MAAO0E,GACnBO,KAoCME,CADMxB,EAASyB,cAAcxB,IAExCqB,KAAKjF,MAAMuB,QAAU,EACrB8D,EAAA,UAAkBJ,KAAM,CACtBjF,MAAO,CACLuB,QAAS,IAEV3K,EAAagN,GAChBpH,KAAK8I,IAAIL,MACT,YAAK1B,GAAmB,SAAUE,GAChC,IAAI8B,OAAS7B,EAAaD,EAAgBE,EAAUC,GAIpDpH,KAAK8I,IAAIC,QACT/I,KAAKgH,EAAkBC,IAAmBE,EAASG,cAAcF,EAAKH,KACrEjH,MAEHA,KAAKgJ,iBAAiB7B,EAAUC,EAAKkB,IAIvCD,EAAKnD,UAAU+D,WAAa,SAAU9B,EAAUC,EAAKkB,GACnD,IAAIlO,EAAc+M,EAASqB,UACvBC,KAAOzI,KAAKkJ,YAAY,QACxBC,EAAahC,EAASyB,cAAcxB,GACpC9L,EAAS,CACXkI,MAAO,IAETwE,EAAc1M,EAAOkI,MAAO2F,GAC5BN,EAAA,YAAoBJ,KAAMnN,EAAQlB,EAAagN,GAC/C,YAAKL,GAAmB,SAAUE,GAChC,IAAII,EAAaF,EAASG,cAAcF,EAAKH,GACzCxL,EAAMuL,EAAkBC,GAE5B,GAAIjH,KAAKvE,KAAS4L,EAAY,CAC5BrH,KAAKoJ,OAAOpJ,KAAKkJ,YAAYjC,IAC7B,IAAI8B,OAAS7B,EAAaD,EAAgBE,EAAUC,GACpDpH,KAAK8I,IAAIC,QAGX/I,KAAKvE,GAAO4L,IACXrH,MAEHA,KAAKgJ,iBAAiB7B,EAAUC,EAAKkB,IAKvCD,EAAKnD,UAAUmE,YAAc,WAC3B,OAAOrJ,KAAKsJ,QAAQ,IAGtBjB,EAAKnD,UAAU8D,iBAAmB,SAAU7B,EAAUC,EAAKkB,GACzD,IAAIlO,EAAc+M,EAASqB,UACvBC,KAAOzI,KAAKkJ,YAAY,QACxBK,EAAoBjB,GAAeA,EAAYiB,kBAC/CC,EAAgBlB,GAAeA,EAAYkB,cAC3CC,EAAkBnB,GAAeA,EAAYmB,gBAC7CC,EAAoBpB,GAAeA,EAAYoB,kBAEnD,IAAKpB,GAAenB,EAASjH,cAAe,CAC1C,IAAIyJ,EAAYxC,EAASyC,aAAaxC,GACtCmC,EAAoBI,EAAUE,SAAS,CAAC,WAAY,cAAcC,eAClEN,EAAgBG,EAAUE,SAAS,CAAC,OAAQ,cAAcC,eAC1DL,EAAkBE,EAAUE,SAAS,CAAC,SAAU,cAAcC,eAC9DJ,EAAoB,YAAqBC,GAG3C,IAAI3M,EAAYmK,EAASG,cAAcF,EAAK,SACxC2C,EAAc/M,EAAUsJ,OAC5BmC,KAAKuB,SAAShN,GACdyL,KAAKwB,MAAM1D,KAAO,KAClBkC,KAAKwB,MAAMC,eAAgB,EAC3BzB,KAAK0B,YAAY,YAAYF,MAAQV,EACrCd,KAAK0B,YAAY,QAAQF,MAAQT,EACjCf,KAAK0B,YAAY,UAAUF,MAAQR,EAEnC,YAAK1C,GAAmB,SAAUE,GAChC,IAAI8B,OAAS/I,KAAKkJ,YAAYjC,GAE9B,GAAI8B,OAAQ,CAEVA,OAAOqB,SAASL,GAChBhB,OAAOkB,MAAMI,QAAUrN,EAAUqN,QAEjC,IAAK,IAAIxP,EAAI,EAAGA,EAAI,IAAeJ,OAAQI,IAAK,CAC9C,IAAIyP,EAAY,IAAezP,GAC3B0P,EAAY9B,KAAK+B,SAASF,GAE9B,GAAIC,EAAW,CACb,IAAIE,EAAiBF,EAAUN,OAAS,GACpCS,EAAQ3B,OAAOoB,YAAYG,GAC3BK,EAAaD,EAAMT,QAAUS,EAAMT,MAAQ,IAElB,MAAzBQ,EAAenE,SACjBqE,EAAW5B,OAAO6B,eAAiB,SAAW,QAAUH,EAAenE,QAG3C,MAA1BmE,EAAeJ,UACjBM,EAAWN,QAAUI,EAAeJ,UAK1CtB,OAAO8B,gBAER7K,MACH,IAAIO,EAASnG,EAAY0Q,YAAY1D,GACrC,YAAcpH,KAAM0J,EAAmB,CACrCqB,eAAgB3D,EAChB4D,aAAc,CACZC,kBAAmB,SAAU7P,EAAWkP,GACtC,OAAOlQ,EAAY6Q,kBAAkB7P,EAAWkP,EAAWnD,EAAS+D,YAGxEC,aAAcpB,GAAe,OAC7BqB,eAAgBpO,EAAUqN,QAC1BgB,aAAwB,MAAV9K,EAAiB4G,EAASmE,QAAQlE,GAAOmE,SAAShL,GAAU,YAAMA,GAAUA,GAAU,KAEtG,IAAIiL,MAAQxL,KAAKyL,iBAGjB,GAAID,MAAO,CACT,IAAIE,EAAmBhC,EAAkBiC,OACzCH,MAAMI,QAAUJ,MAAMvB,MAAM4B,MAC5BL,MAAMM,gBAAkBN,MAAMvB,MAAM8B,cAEpCP,MAAMQ,WAAaN,EAAiBrR,IAAI,aAAe,SACvD,IAAI4R,EAAWP,EAAiBrR,IAAI,YAE/B,YAAQ4R,KACXA,EAAW,CAACA,EAAUA,IAGxBT,MAAMU,gBAAkBD,EAG1BjM,KAAKmM,cAAc,CACjBC,SAAU,KACVC,OAAO,EACPC,QAAQ,IAGV,YAAoBtM,OAGtBqI,EAAKnD,UAAUqH,UAAY,WACzB,YAAcvM,OAGhBqI,EAAKnD,UAAUsH,SAAW,WACxB,YAAcxM,OAGhBqI,EAAKnD,UAAUuH,aAAe,SAAUtF,EAAUC,GAChDpH,KAAKgI,cAAcb,EAASyB,cAAcxB,KAG5CiB,EAAKnD,UAAU8C,cAAgB,SAAUE,GACvC,IAAIwE,EAAW1M,KAAKkJ,YAAY,QAChClB,EAAc0E,EAASlJ,MAAO0E,GAC9BwE,EAASC,SAGXtE,EAAKnD,UAAU0H,aAAe,WAC5B,IACIC,EADY7M,KACWkJ,YAAY,cACnC4D,EAFY9M,KAESkJ,YAAY,YACjCsC,MAHYxL,KAGMyL,iBAEtB,GAAKoB,GAAeC,GAActB,QAASA,MAAMuB,OAAjD,CAOA,IAHA,IAAIC,EAAW,EACXC,EAAajN,KAAKkN,OAEfD,GACDA,EAAWE,SACbH,GAAYC,EAAWE,QAGzBF,EAAaA,EAAWC,OAG1B,IAAIzE,KApBYzI,KAoBKkJ,YAAY,QAGjC,GAAKlJ,KAAKoN,SAAY3E,KAAK2E,QAA3B,CAIA,IAAIrI,EAAU0D,KAAKjF,MAAMuB,QACrBsI,EAAU5E,KAAK9B,QAAQ,GACvB2G,EAAQ7E,KAAK9B,QAAQ5B,GACrBwI,EAAIC,EAAA,EAAW,GAAIF,EAAOD,GAgC9B,GA/BAG,EAAA,EAAiBD,EAAGA,GAiBhBV,IACFA,EAAWY,YAAYJ,GACvBK,EAAkBb,EAAY,GAC9BA,EAAWM,OAASN,EAAWc,OAASX,EAAWjI,EACnD8H,EAAWhC,cAGTiC,IACFA,EAASW,YAAYH,GACrBI,EAAkBZ,EAAU,GAC5BA,EAASK,OAASL,EAASa,OAASX,EAAWjI,EAC/C+H,EAASjC,cAGPW,QAAUA,MAAMuB,OAAQ,CAC1BvB,MAAMtH,EAAIsH,MAAMrH,EAAI,EACpBqH,MAAMoC,QAAUpC,MAAMqC,QAAU,EAChC,IAAIC,OAAY,EACZC,OAAoB,EACpB9B,EAAWT,MAAMU,gBACjB8B,EAAY/B,EAAS,GAAKe,EAC1BiB,EAAYhC,EAAS,GAAKe,EAC1BkB,EAAcnJ,EAAU,EACxBoJ,EAAU1F,KAAK5B,UAAUqH,GACzBE,EAAI,CAACD,EAAQ,IAAKA,EAAQ,IAC1BE,EAAK5F,KAAK9B,QAAQuH,GAElBE,EAAE,GAAK,IACTA,EAAE,IAAMA,EAAE,GACVA,EAAE,IAAMA,EAAE,IAGZ,IAAIE,EAAMH,EAAQ,GAAK,GAAK,EAAI,EAEhC,GAAyB,UAArB3C,MAAMQ,YAA+C,QAArBR,MAAMQ,WAAsB,CAC9D,IAAIuC,GAAYhK,KAAKiK,MAAML,EAAQ,GAAIA,EAAQ,IAE3Cb,EAAM,GAAKD,EAAQ,KACrBkB,EAAWhK,KAAKwD,GAAKwG,GAGvB/C,MAAM+C,SAAWA,EAGnB,IAAIE,OAAK,EAET,OAAQjD,MAAMQ,YACZ,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,SACHyC,GAAMR,EACNF,EAAoB,SACpB,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,kBACHU,EAAKR,EACLF,EAAoB,MACpB,MAEF,QACEU,EAAK,EACLV,EAAoB,SAGxB,OAAQvC,MAAMQ,YACZ,IAAK,MACHR,MAAMtH,EAAIqJ,EAAE,GAAKS,EAAYV,EAAM,GACnC9B,MAAMrH,EAAIoJ,EAAE,GAAKU,EAAYX,EAAM,GACnCQ,EAAYP,EAAE,GAAK,GAAM,OAASA,EAAE,IAAM,GAAM,QAAU,SAC1DQ,EAAoBR,EAAE,GAAK,GAAM,MAAQA,EAAE,IAAM,GAAM,SAAW,SAClE,MAEF,IAAK,QACH/B,MAAMtH,GAAKqJ,EAAE,GAAKS,EAAYX,EAAQ,GACtC7B,MAAMrH,GAAKoJ,EAAE,GAAKU,EAAYZ,EAAQ,GACtCS,EAAYP,EAAE,GAAK,GAAM,QAAUA,EAAE,IAAM,GAAM,OAAS,SAC1DQ,EAAoBR,EAAE,GAAK,GAAM,SAAWA,EAAE,IAAM,GAAM,MAAQ,SAClE,MAEF,IAAK,iBACL,IAAK,cACL,IAAK,oBACH/B,MAAMtH,EAAI8J,EAAYM,EAAMjB,EAAQ,GACpC7B,MAAMrH,EAAIkJ,EAAQ,GAAKoB,EACvBX,EAAYK,EAAQ,GAAK,EAAI,QAAU,OACvC3C,MAAMoC,SAAWI,EAAYM,EAC7B9C,MAAMqC,SAAWY,EACjB,MAEF,IAAK,kBACL,IAAK,eACL,IAAK,qBACL,IAAK,SACHjD,MAAMtH,EAAImK,EAAG,GACb7C,MAAMrH,EAAIkK,EAAG,GAAKI,EAClBX,EAAY,SACZtC,MAAMqC,SAAWY,EACjB,MAEF,IAAK,eACL,IAAK,YACL,IAAK,kBACHjD,MAAMtH,GAAK8J,EAAYM,EAAMhB,EAAM,GACnC9B,MAAMrH,EAAImJ,EAAM,GAAKmB,EACrBX,EAAYK,EAAQ,IAAM,EAAI,QAAU,OACxC3C,MAAMoC,QAAUI,EAAYM,EAC5B9C,MAAMqC,SAAWY,EAIrBjD,MAAM2B,OAAS3B,MAAMmC,OAASX,EAC9BxB,MAAMkD,SAAS,CAEb3C,cAAeP,MAAMM,iBAAmBiC,EACxClC,MAAOL,MAAMI,SAAWkC,MApI5B,SAASJ,EAAkB3E,OAAQhE,GAKjC,IAAI4J,EAAoB5F,OAAOjB,oBAE/B,GAAyB,MAArB6G,EAA2B,CAC7B,IAAIR,EAAU1F,KAAK5B,UAAU9B,GAC7BgE,OAAO6F,KAAK,YAAyB,IAAZ7J,GAAiB,EAAI,GAAKR,KAAKwD,GAAK,EAAIxD,KAAKiK,MAAML,EAAQ,GAAIA,EAAQ,UAEhGpF,OAAO6F,KAAK,WAAYD,KA8HvBtG,EA7VT,CA8VE,KC9ZE,EAEJ,WACE,SAASwG,EAASC,GAChB9O,KAAK+O,MAAQ,IAAI,IACjB/O,KAAKgP,UAAYF,GAAY,EAkH/B,OA/GAD,EAAS3J,UAAU+J,aAAe,WAChC,OAAO,GAKTJ,EAAS3J,UAAU+D,WAAa,SAAU9B,GACxC,IAAIhB,EAAQnG,KAGR+O,EADW/O,KACM+O,MACjBG,EAFWlP,KAEYmP,UAFZnP,KAGNmP,UAAYhI,EAGhB+H,GACHH,EAAMK,YAGR,IAAI9G,EAAc+G,EAAgBlI,GAClCA,EAASmI,KAAKJ,GAAapG,KAAI,SAAU1B,GACvCjB,EAAMoJ,OAAOpI,EAAUC,EAAKkB,MAC3BzF,QAAO,SAAU2M,EAAQC,GAC1BtJ,EAAMuJ,UAAUR,EAAa/H,EAAUsI,EAAQD,EAAQlH,MACtDc,QAAO,SAAUhC,GAClB2H,EAAM3F,OAAO8F,EAAYS,iBAAiBvI,OACzCwI,WAKLf,EAAS3J,UAAUuH,aAAe,WAChC,IAAItF,EAAWnH,KAAKmP,UAEfhI,GAILA,EAAS0I,mBAAkB,SAAUC,EAAI1I,GACvC0I,EAAGrD,aAAatF,EAAUC,KACzBpH,OAKL6O,EAAS3J,UAAU6K,yBAA2B,SAAU5I,GACtDnH,KAAKgQ,aAAeX,EAAgBlI,GACpCnH,KAAKmP,UAAY,KACjBnP,KAAK+O,MAAMK,aAKbP,EAAS3J,UAAU+K,kBAAoB,SAAUC,EAAY/I,GAC3D,SAASgJ,EAA0BL,GAC5BA,EAAGM,SA2Dd,SAAwBN,GACtB,OAAOA,EAAGO,WAAaP,EAAGO,UAAU5V,OAAS,EA5DrB6V,CAAeR,KACjCA,EAAGS,aAAc,EACjBT,EAAG3F,YAAY,YAAYqG,YAAa,GAI5C,IAAK,IAAIpJ,EAAM8I,EAAWO,MAAOrJ,EAAM8I,EAAWQ,IAAKtJ,IAAO,CAG5D,GAAIuJ,EAFaxJ,EAASyB,cAAcxB,IAET,CAC7B,IAAI0I,EAAK,IAAI9P,KAAKgP,UAAU7H,EAAUC,EAAKpH,KAAKgQ,cAChDF,EAAGc,SAAST,GACZnQ,KAAK+O,MAAMjG,IAAIgH,GACf3I,EAAS0J,iBAAiBzJ,EAAK0I,MAOrCjB,EAAS3J,UAAUkE,OAAS,WAC1BpJ,KAAK+O,MAAMK,aAKbP,EAAS3J,UAAUqK,OAAS,SAAUpI,EAAUC,EAAKkB,GAGnD,GAAKqI,EAFYxJ,EAASyB,cAAcxB,IAExC,CAIA,IAAI0I,EAAK,IAAI9P,KAAKgP,UAAU7H,EAAUC,EAAKkB,GAC3CnB,EAAS0J,iBAAiBzJ,EAAK0I,GAC/B9P,KAAK+O,MAAMjG,IAAIgH,KAGjBjB,EAAS3J,UAAUwK,UAAY,SAAUR,EAAa4B,EAAarB,EAAQD,EAAQlH,GACjF,IAAIyI,EAAS7B,EAAYS,iBAAiBF,GAErCkB,EAAcG,EAAYlI,cAAc4G,KAKxCuB,EAGHA,EAAO9H,WAAW6H,EAAatB,EAAQlH,GAFvCyI,EAAS,IAAI/Q,KAAKgP,UAAU8B,EAAatB,EAAQlH,GAKnDwI,EAAYD,iBAAiBrB,EAAQuB,GACrC/Q,KAAK+O,MAAMjG,IAAIiI,IAXb/Q,KAAK+O,MAAM3F,OAAO2H,IAcflC,EArHT,GA4HA,SAASQ,EAAgBlI,GACvB,IAAIqB,EAAYrB,EAASqB,UACzB,MAAO,CACLxL,UAAWwL,EAAUqB,SAAS,aAAaC,eAC3CP,kBAAmBf,EAAUqB,SAAS,CAAC,WAAY,cAAcC,eACjEN,cAAehB,EAAUqB,SAAS,CAAC,OAAQ,cAAcC,eACzDL,gBAAiBjB,EAAUqB,SAAS,CAAC,SAAU,cAAcC,eAC7DJ,kBAAmB,YAAqBlB,IAI5C,SAASwI,EAAWC,GAClB,OAAOnL,MAAMmL,EAAG,KAAOnL,MAAMmL,EAAG,IAGlC,SAASN,EAAcO,GACrB,OAAQF,EAAWE,EAAI,MAAQF,EAAWE,EAAI,IAGjC,O,iICsLf,SAASC,EAAYC,EAAI3C,GACvBzO,KAAKkN,OAAOmE,MAAMD,EAAI3C,GAGT,MAlUf,SAAUhJ,GAGR,SAAS6L,EAAO3R,KAAMyH,EAAKkB,EAAapC,GACtC,IAAIC,EAAQV,EAAOW,KAAKpG,OAASA,KAIjC,OAFAmG,EAAM8C,WAAWtJ,KAAMyH,EAAKkB,EAAapC,GAElCC,EAmTT,OA1TA,YAAUmL,EAAQ7L,GAUlB6L,EAAOpM,UAAUqM,cAAgB,SAAUlK,EAAY1H,KAAMyH,EAAKG,EAAYiK,GAE5ExR,KAAKoP,YAOL,IAAIvH,EAAa,iBAAaR,GAAa,GAAI,EAAG,EAAG,EAAG,KAAMmK,GAC9D3J,EAAW+G,KAAK,CACd6C,GAAI,IACJC,SAAS,EACTvE,OAAQ5F,EAAW,GAAK,EACxBoG,OAAQpG,EAAW,GAAK,IAG1BM,EAAWwJ,MAAQF,EACnBnR,KAAK2R,YAActK,EACnBrH,KAAK8I,IAAIjB,IAQXyJ,EAAOpM,UAAU0M,oBAAsB,SAAUC,GAC/C7R,KAAKsJ,QAAQ,GAAGwI,cAAc,KAAMD,IAatCP,EAAOpM,UAAU6M,cAAgB,WAC/B,OAAO/R,KAAKsJ,QAAQ,IAOtBgI,EAAOpM,UAAUqH,UAAY,WAC3B,YAAcvM,KAAKsJ,QAAQ,KAO7BgI,EAAOpM,UAAUsH,SAAW,WAC1B,YAAcxM,KAAKsJ,QAAQ,KAQ7BgI,EAAOpM,UAAU8M,KAAO,SAAUC,EAAQC,GACxC,IAAIrK,EAAa7H,KAAKsJ,QAAQ,GAC9BzB,EAAWoK,OAASA,EACpBpK,EAAWqK,EAAIA,GAGjBZ,EAAOpM,UAAUiN,aAAe,SAAUC,GACxC,IAAIvK,EAAa7H,KAAKsJ,QAAQ,GAC9BzB,EAAWuK,UAAYA,EACvBvK,EAAWwK,OAASD,EAAY,OAASvK,EAAWwK,QAOtDf,EAAOpM,UAAU+D,WAAa,SAAUtJ,KAAMyH,EAAKkB,EAAapC,GAC9DlG,KAAKsS,QAAS,EACd,IAAIjL,EAAa1H,KAAK2H,cAAcF,EAAK,WAAa,SAClDhN,EAAcuF,KAAK6I,UACnBjB,EAAa+J,EAAOiB,cAAc5S,KAAMyH,GACxCoL,EAASnL,IAAerH,KAAK2R,YAC7Bc,EAAmBvM,GAAQA,EAAKuM,iBAEpC,GAAID,EAAQ,CACV,IAAIhB,EAAa7R,KAAK2H,cAAcF,EAAK,oBAEzCpH,KAAKuR,cAAclK,EAAY1H,KAAMyH,EAAKG,EAAYiK,OACjD,EACD3J,EAAa7H,KAAKsJ,QAAQ,IACnBgJ,QAAS,EACpB,IAAIhX,EAAS,CACX6R,OAAQ5F,EAAW,GAAK,EACxBoG,OAAQpG,EAAW,GAAK,GAE1BkL,EAAmB5K,EAAW+G,KAAKtT,GAAUuN,EAAA,YAAoBhB,EAAYvM,EAAQlB,EAAagN,GAKpG,GAFApH,KAAK0S,cAAc/S,KAAMyH,EAAKG,EAAYe,EAAapC,GAEnDsM,EAAQ,CACV,IAAI3K,EAAa7H,KAAKsJ,QAAQ,GAE9B,IAAKmJ,EAAkB,CACjBnX,EAAS,CACX6R,OAAQnN,KAAK2S,OACbhF,OAAQ3N,KAAK4S,OACb3I,MAAO,CAELI,QAASxC,EAAWoC,MAAMI,UAG9BxC,EAAWsF,OAAStF,EAAW8F,OAAS,EACxC9F,EAAWoC,MAAMI,QAAU,EAC3BxB,EAAA,UAAkBhB,EAAYvM,EAAQlB,EAAagN,IAInDqL,GAEFzS,KAAKsJ,QAAQ,GAAGwI,cAAc,UAGhC9R,KAAK6S,aAAezY,GAGtBkX,EAAOpM,UAAUwN,cAAgB,SAAU/S,KAAMyH,EAAKG,EAAYe,EAAapC,GAC7E,IAEI4M,EACAC,EACAC,EACAC,EACAC,EACAxJ,EACAyJ,EACAC,EATAvL,EAAa7H,KAAKsJ,QAAQ,GAC1BlP,EAAcuF,KAAK6I,UAqBvB,GAXIF,IACFwK,EAAoBxK,EAAYwK,kBAChCC,EAAgBzK,EAAYyK,cAC5BC,EAAkB1K,EAAY0K,gBAC9BC,EAAQ3K,EAAY2K,MACpBC,EAAY5K,EAAY4K,UACxBxJ,EAAoBpB,EAAYoB,kBAChCyJ,EAAa7K,EAAY6K,WACzBC,EAAc9K,EAAY8K,cAGvB9K,GAAe3I,KAAKO,cAAe,CACtC,IAAIyJ,EAAYrB,GAAeA,EAAYqB,UAAYrB,EAAYqB,UAAYhK,KAAKiK,aAAaxC,GAC7FiM,EAAgB1J,EAAUE,SAAS,YACvCiJ,EAAoBO,EAAcxJ,SAAS,aAAayJ,eACxDN,EAAkBrJ,EAAUE,SAAS,CAAC,SAAU,cAAcyJ,eAC9DP,EAAgBpJ,EAAUE,SAAS,CAAC,OAAQ,cAAcyJ,eAC1DL,EAAQI,EAAchZ,IAAI,SAC1B6Y,EAAYG,EAAchZ,IAAI,aAC9BqP,EAAoB,YAAqBC,GACzCwJ,EAAaE,EAAcE,WAAW,SACtCH,EAAczJ,EAAU4J,WAAW,UAGrC,IAAI/L,EAAe7H,KAAK2H,cAAcF,EAAK,gBAC3CS,EAAW+G,KAAK,YAAapH,GAAgB,GAAKjD,KAAKwD,GAAK,KAAO,GACnE,IAAIN,EAAe9H,KAAK2H,cAAcF,EAAK,iBAAmB,EAE1DK,IACG,YAAQA,KACXA,EAAe,CAACA,EAAcA,IAGhCI,EAAW3D,EAAI,YAAauD,EAAa,GAAIF,EAAW,IACxDM,EAAW1D,EAAI,YAAa,YAAUsD,EAAa,GAAIA,EAAa,KAAO,EAAGF,EAAW,KAG3F6L,GAAevL,EAAW+G,KAAK,SAAUwE,GACzC,IAAII,EAAc7T,KAAK2H,cAAcF,EAAK,SACtC2C,EAAcyJ,EAAYjN,KAE9B,GAAIsB,aAAsB,IAAS,CACjC,IAAI4L,EAAY5L,EAAWoC,MAC3BpC,EAAWmC,SAAS,YAAO,CAEzB0J,MAAOD,EAAUC,MACjBxP,EAAGuP,EAAUvP,EACbC,EAAGsP,EAAUtP,EACbC,MAAOqP,EAAUrP,MACjBC,OAAQoP,EAAUpP,QACjBmP,SAEC3L,EAAW+C,eAIb/C,EAAWmC,SAAS,YAAO,GAAIwJ,IAE/B3L,EAAWmC,SAASwJ,GAItB3L,EAAWoC,MAAM0J,MAAQ,KACzB9L,EAAWuC,SAASL,EAAa7D,GAAQA,EAAK0N,kBAC9C/L,EAAWoC,MAAMC,eAAgB,EAGnC,IAAI2J,EAAQlU,KAAK2H,cAAcF,EAAK,SAChC0M,EAAW9T,KAAK+T,IAEP,MAATF,EACc,MAAZC,IACF9T,KAAK+T,IAAMlM,EAAW4J,GACtB5J,EAAW4J,IAAMoC,GAEE,MAAZC,IACTjM,EAAW4J,GAAKqC,EAChB9T,KAAK+T,IAAM,MAGb,IAAIC,EAAe9N,GAAQA,EAAK8N,aAChC,YAAcnM,EAAY6B,EAAmB,CAC3CsB,aAAc5Q,EACd2Q,eAAgB3D,EAChBiE,YAKF,SAA6BjE,GAC3B,OAAO4M,EAAerU,KAAK2L,QAAQlE,GAAO,YAAgBzH,KAAMyH,IALhE+D,aAAcpB,EACdqB,eAAgBoI,EAAYnJ,UAO9BrK,KAAK2S,OAASpL,EAAW,GAAK,EAC9BvH,KAAK4S,OAASrL,EAAW,GAAK,EAC9B,IAAI0M,EAAgBpM,EAAWsC,YAAY,YAK3C,GAJA8J,EAAchK,MAAQ6I,EACtBjL,EAAWsC,YAAY,UAAUF,MAAQ+I,EACzCnL,EAAWsC,YAAY,QAAQF,MAAQ8I,EAEnCI,EAAY,CACd,IAAIe,EAAa3P,KAAK4P,IAAI,IAAK,EAAInU,KAAK4S,QACxCqB,EAAc9G,OAASnN,KAAK2S,OAASuB,EACrCD,EAActG,OAAS3N,KAAK4S,OAASsB,EAGvClU,KAAKoU,eAAe,GACpB,YAAoBpU,KAAMiT,EAAOC,IAGnC5B,EAAOpM,UAAUkP,eAAiB,SAAUC,GAC1CrU,KAAKmN,OAASnN,KAAK2N,OAAS0G,GAG9B/C,EAAOpM,UAAUoP,QAAU,SAAUC,EAAIlX,GACvC,IAAIwK,EAAa7H,KAAKsJ,QAAQ,GAC1BlP,EAAc4F,KAAK6S,aACnBzX,EAAY,YAAU4E,MAAM5E,UAC5BoZ,EAAenX,GAAOA,EAAIoX,UAI9B,GAFAzU,KAAKsS,OAASzK,EAAWyK,QAAS,EAE9BjV,GAAOA,EAAIqX,UAAW,CACxB,IAAIC,EAAc9M,EAAW4D,iBAEzBkJ,GACF9L,EAAA,cAAsB8L,EAAa,CACjC1K,MAAO,CACLI,QAAS,IAEVjQ,EAAa,CACdgB,UAAWA,EACXwZ,UAAWJ,EACXD,GAAI,WACF1M,EAAWgN,4BAKjBhN,EAAWgN,oBAGbhM,EAAA,cAAsBhB,EAAY,CAChCoC,MAAO,CACLI,QAAS,GAEX8C,OAAQ,EACRQ,OAAQ,GACPvT,EAAa,CACdgB,UAAWA,EACXmZ,GAAIA,EACJK,UAAWJ,KAIflD,EAAOiB,cAAgB,SAAU5S,KAAMyH,GACrC,IAAIG,EAAa5H,KAAK2H,cAAcF,EAAK,cACzC,OAAO,YAAQG,GAAcA,EAAWnJ,QAAU,EAAEmJ,GAAaA,IAG5D+J,EA3TT,CA4TE,KCpUF,SAASwD,EAAgBnV,KAAMoV,EAAO3N,EAAK/J,GACzC,OAAO0X,IAAUjP,MAAMiP,EAAM,MAAQjP,MAAMiP,EAAM,OAAS1X,EAAI2X,UAAY3X,EAAI2X,SAAS5N,OAGlF/J,EAAI4X,YAAc5X,EAAI4X,UAAUC,QAAQH,EAAM,GAAIA,EAAM,MAA8C,SAAtCpV,KAAK2H,cAAcF,EAAK,UAG/F,SAAS+N,EAAmB9X,GAO1B,OANW,MAAPA,GAAgB,YAASA,KAC3BA,EAAM,CACJ2X,SAAU3X,IAIPA,GAAO,GAGhB,SAASgS,EAAgB1P,MACvB,IAAIvF,EAAcuF,KAAK6I,UACnB6K,EAAgBjZ,EAAYyP,SAAS,YACzC,MAAO,CACLiJ,kBAAmBO,EAAcxJ,SAAS,aAAayJ,eACvDP,cAAe3Y,EAAYyP,SAAS,CAAC,OAAQ,cAAcyJ,eAC3DN,gBAAiB5Y,EAAYyP,SAAS,CAAC,SAAU,cAAcyJ,eAC/DL,MAAOI,EAAchZ,IAAI,SACzB6Y,UAAWG,EAAchZ,IAAI,aAC7B8Y,WAAYE,EAAchZ,IAAI,SAC9BqP,kBAAmB,YAAqBtP,GACxCgZ,YAAahZ,EAAYC,IAAI,WAIjC,IAAI,EAEJ,WACE,SAAS+a,EAAWC,GAClBrV,KAAK+O,MAAQ,IAAI,IACjB/O,KAAKsV,YAAcD,GAAc,EAsJnC,OA/IAD,EAAWlQ,UAAU+D,WAAa,SAAUtJ,KAAMtC,GAChDA,EAAM8X,EAAmB9X,GACzB,IAAI0R,EAAQ/O,KAAK+O,MACb3U,EAAcuF,KAAK6I,UACnB+M,EAAUvV,KAAKwV,MACfH,EAAarV,KAAKsV,YAClB7C,EAAmBpV,EAAIoV,iBACvBnK,EAAc+G,EAAgB1P,MAC9B8V,EAAkB,CACpBhD,iBAAkBA,GAGhBiD,EAAiBrY,EAAIqY,gBAAkB,SAAUtO,GACnD,OAAOzH,KAAKiJ,cAAcxB,IAKvBmO,GACHxG,EAAMK,YAGRzP,KAAK2P,KAAKiG,GAASzM,KAAI,SAAU0G,GAC/B,IAAIuF,EAAQW,EAAelG,GAE3B,GAAIsF,EAAgBnV,KAAMoV,EAAOvF,EAAQnS,GAAM,CAC7C,IAAIsY,EAAW,IAAIN,EAAW1V,KAAM6P,EAAQlH,EAAamN,GACzDE,EAASlI,YAAYsH,GACrBpV,KAAKkR,iBAAiBrB,EAAQmG,GAC9B5G,EAAMjG,IAAI6M,OAEX9S,QAAO,SAAU2M,EAAQC,GAC1B,IAAIkG,EAAWJ,EAAQ5F,iBAAiBF,GACpCsF,EAAQW,EAAelG,GAE3B,GAAKsF,EAAgBnV,KAAMoV,EAAOvF,EAAQnS,GAA1C,CAKA,GAAKsY,EAGE,CACLA,EAAS1M,WAAWtJ,KAAM6P,EAAQlH,EAAamN,GAC/C,IAAIna,EAAS,CACX4I,EAAG6Q,EAAM,GACT5Q,EAAG4Q,EAAM,IAEXtC,EAAmBkD,EAAS/G,KAAKtT,GAAUuN,EAAA,YAAoB8M,EAAUra,EAAQlB,QARjFub,EAAW,IAAIN,EAAW1V,KAAM6P,IACvB/B,YAAYsH,GAWvBhG,EAAMjG,IAAI6M,GACVhW,KAAKkR,iBAAiBrB,EAAQmG,QAlB5B5G,EAAM3F,OAAOuM,MAmBdvM,QAAO,SAAUqG,GAClB,IAAIK,EAAKyF,EAAQ5F,iBAAiBF,GAClCK,GAAMA,EAAGwE,SAAQ,WACfvF,EAAM3F,OAAO0G,SAEdF,UACH5P,KAAK4V,gBAAkBF,EACvB1V,KAAKwV,MAAQ7V,MAKfyV,EAAWlQ,UAAU+J,aAAe,WAClC,OAAO,GAKTmG,EAAWlQ,UAAUuH,aAAe,WAClC,IAAItG,EAAQnG,KAERL,KAAOK,KAAKwV,MAEZ7V,MAEFA,KAAKkQ,mBAAkB,SAAUC,EAAI1I,GACnC,IAAI2N,EAAQ5O,EAAMyP,gBAAgBxO,GAElC0I,EAAGrC,YAAYsH,GACfjF,EAAGjF,iBAOTuK,EAAWlQ,UAAU6K,yBAA2B,SAAUpQ,MACxDK,KAAKgQ,aAAeX,EAAgB1P,MACpCK,KAAKwV,MAAQ,KACbxV,KAAK+O,MAAMK,aAQbgG,EAAWlQ,UAAU+K,kBAAoB,SAAUC,EAAYvQ,KAAMtC,GAGnE,SAAS8S,EAA0BL,GAC5BA,EAAGM,UACNN,EAAGS,aAAc,EACjBT,EAAG3F,YAAY,YAAYqG,YAAa,GAL5CnT,EAAM8X,EAAmB9X,GASzB,IAAK,IAAI+J,EAAM8I,EAAWO,MAAOrJ,EAAM8I,EAAWQ,IAAKtJ,IAAO,CAC5D,IAAI2N,EAAQpV,KAAKiJ,cAAcxB,GAE/B,GAAI0N,EAAgBnV,KAAMoV,EAAO3N,EAAK/J,GAAM,CAC1C,IAAIyS,EAAK,IAAI9P,KAAKsV,YAAY3V,KAAMyH,EAAKpH,KAAKgQ,cAC9CF,EAAGc,SAAST,GACZL,EAAGrC,YAAYsH,GACf/U,KAAK+O,MAAMjG,IAAIgH,GACfnQ,KAAKkR,iBAAiBzJ,EAAK0I,MAOjCsF,EAAWlQ,UAAUkE,OAAS,SAAUyM,GACtC,IAAI9G,EAAQ/O,KAAK+O,MACbpP,KAAOK,KAAKwV,MAEZ7V,MAAQkW,EACVlW,KAAKkQ,mBAAkB,SAAUC,GAC/BA,EAAGwE,SAAQ,WACTvF,EAAM3F,OAAO0G,SAIjBf,EAAMK,aAKHgG,EAzJT,GA4Je","file":"vendors~app~c3e27ec1.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// @ts-nocheck\nimport * as zrUtil from 'zrender/lib/core/util';\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (typeof autoCurvenessParmas === 'number') {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nexport function initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\nexport function createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\nexport function getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util';\nimport List from '../../data/List';\nimport createDimensions from '../../data/helper/createDimensions';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper';\nimport { getDataItemValue } from '../../util/model';\nimport CoordinateSystem from '../../core/CoordinateSystem';\nimport { getCoordSysInfoBySeries } from '../../model/referHelper';\nimport { createSourceFromSeriesDataOption, isSourceInstance } from '../../data/Source';\nimport { enableDataStack } from '../../data/helper/dataStackHelper';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper';\nimport { SOURCE_FORMAT_ORIGINAL } from '../../util/types';\n\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!isSourceInstance(source)) {\n source = createSourceFromSeriesDataOption(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo && coordSysInfo.coordSysDims) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var useEncodeDefaulter = opt.useEncodeDefaulter;\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: zrUtil.isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n\n if (opt.createInvertedIndices) {\n dimInfo.createInvertedIndices = true;\n }\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nexport default createListFromArray;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { retrieveRawValue } from '../../data/helper/dataProvider';\nimport { isArray } from 'zrender/lib/core/util';\n/**\n * @return label string. Not null/undefined\n */\n\nexport function getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);\n return rawVal != null ? rawVal + '' : null;\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\n }\n\n return vals.join(' ');\n }\n}\nexport function getDefaultInterpolatedLabel(data, interpolatedValue) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n\n if (!isArray(interpolatedValue)) {\n return interpolatedValue + '';\n }\n\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var dimInfo = data.getDimensionInfo(labelDims[i]);\n\n if (dimInfo) {\n vals.push(interpolatedValue[dimInfo.index]);\n }\n }\n\n return vals.join(' ');\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { makeInner } from '../../util/model';\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\n\nexport default function createRenderPlanner() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = !!fields.large;\n var originalProgressive = !!fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n // exists. See #11611 . Probably we need to modify this structure, see the comment\n // on `performRawSeries` in `Schedular.js`.\n\n var large = fields.large = !!(pipelineContext && pipelineContext.large);\n var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\n return !!(originalLarge !== large || originalProgressive !== progressive) && 'reset';\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as zrUtil from 'zrender/lib/core/util';\nimport List from '../../data/List';\nimport Graph from '../../data/Graph';\nimport linkList from '../../data/helper/linkList';\nimport createDimensions from '../../data/helper/createDimensions';\nimport CoordinateSystem from '../../core/CoordinateSystem';\nimport createListFromArray from './createListFromArray';\nimport { convertOptionIdName } from '../../util/model';\nexport default function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(convertOptionIdName(link.id, null), source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createListFromArray(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensionNames = createDimensions(nodes, {\n coordDimensions: coordDimensions\n });\n nodeData = new List(dimensionNames, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new List(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkList({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic';\nimport { round } from '../../util/number';\n\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\n var rect = cartesian.getArea();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isAxisInversed = baseAxis.inverse;\n\n if (isHorizontal) {\n if (isAxisInversed) {\n clipPath.shape.x += width;\n }\n\n clipPath.shape.width = 0;\n } else {\n if (!isAxisInversed) {\n clipPath.shape.y += height;\n }\n\n clipPath.shape.height = 0;\n }\n\n var duringCb = typeof during === 'function' ? function (percent) {\n during(percent, clipPath);\n } : null;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height,\n x: x,\n y: y\n }\n }, seriesModel, null, done, duringCb);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var r0 = round(sectorArea.r0, 1);\n var r = round(sectorArea.r, 1);\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: r0,\n r: r,\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n var isRadial = polar.getBaseAxis().dim === 'angle';\n\n if (isRadial) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n } else {\n clipPath.shape.r = r0;\n }\n\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle,\n r: r\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\n }\n\n return null;\n}\n\nexport { createGridClipPath, createPolarClipPath, createClipPath };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\n/**\n * Line path for bezier and straight line draw\n */\n\nimport * as graphic from '../../util/graphic';\nimport * as vec2 from 'zrender/lib/core/vector';\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nvar StraightLineShape =\n/** @class */\nfunction () {\n function StraightLineShape() {\n // Start point\n this.x1 = 0;\n this.y1 = 0; // End point\n\n this.x2 = 0;\n this.y2 = 0;\n this.percent = 1;\n }\n\n return StraightLineShape;\n}();\n\nvar CurveShape =\n/** @class */\nfunction (_super) {\n __extends(CurveShape, _super);\n\n function CurveShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return CurveShape;\n}(StraightLineShape);\n\nfunction isStraightLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar ECLinePath =\n/** @class */\nfunction (_super) {\n __extends(ECLinePath, _super);\n\n function ECLinePath(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'ec-line';\n return _this;\n }\n\n ECLinePath.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n\n ECLinePath.prototype.getDefaultShape = function () {\n return new StraightLineShape();\n };\n\n ECLinePath.prototype.buildPath = function (ctx, shape) {\n if (isStraightLine(shape)) {\n straightLineProto.buildPath.call(this, ctx, shape);\n } else {\n bezierCurveProto.buildPath.call(this, ctx, shape);\n }\n };\n\n ECLinePath.prototype.pointAt = function (t) {\n if (isStraightLine(this.shape)) {\n return straightLineProto.pointAt.call(this, t);\n } else {\n return bezierCurveProto.pointAt.call(this, t);\n }\n };\n\n ECLinePath.prototype.tangentAt = function (t) {\n var shape = this.shape;\n var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t);\n return vec2.normalize(p, p);\n };\n\n return ECLinePath;\n}(graphic.Path);\n\nexport default ECLinePath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { isArray, each, retrieve2 } from 'zrender/lib/core/util';\nimport * as vector from 'zrender/lib/core/vector';\nimport * as symbolUtil from '../../util/symbol';\nimport ECLinePath from './LinePath';\nimport * as graphic from '../../util/graphic';\nimport { enableHoverEmphasis, enterEmphasis, leaveEmphasis, SPECIAL_STATES } from '../../util/states';\nimport { getLabelStatesModels, setLabelStyle } from '../../label/labelStyle';\nimport { round, parsePercent } from '../../util/number';\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n var symbolOffset = lineData.getItemVisual(idx, name + 'Offset') || 0;\n var symbolKeepAspect = lineData.getItemVisual(idx, name + 'KeepAspect');\n var symbolSizeArr = isArray(symbolSize) ? symbolSize : [symbolSize, symbolSize];\n var symbolOffsetArr = isArray(symbolOffset) ? symbolOffset : [symbolOffset, symbolOffset];\n symbolOffsetArr[0] = parsePercent(symbolOffsetArr[0], symbolSizeArr[0]);\n symbolOffsetArr[1] = parsePercent(retrieve2(symbolOffsetArr[1], symbolOffsetArr[0]), symbolSizeArr[1]);\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect);\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new ECLinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nvar Line =\n/** @class */\nfunction (_super) {\n __extends(Line, _super);\n\n function Line(lineData, idx, seriesScope) {\n var _this = _super.call(this) || this;\n\n _this._createLine(lineData, idx, seriesScope);\n\n return _this;\n }\n\n Line.prototype._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n }; // TODO More strict on the List type in parameters?\n\n\n Line.prototype.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n };\n\n ;\n\n Line.prototype.getLinePath = function () {\n return this.childAt(0);\n };\n\n Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\n var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\n var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\n var labelStatesModels = seriesScope && seriesScope.labelStatesModels; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n emphasisLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\n blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\n selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\n labelStatesModels = getLabelStatesModels(itemModel);\n }\n\n var lineStyle = lineData.getItemVisual(idx, 'style');\n var visualColor = lineStyle.stroke;\n line.useStyle(lineStyle);\n line.style.fill = null;\n line.style.strokeNoScale = true;\n line.ensureState('emphasis').style = emphasisLineStyle;\n line.ensureState('blur').style = blurLineStyle;\n line.ensureState('select').style = selectLineStyle; // Update symbol\n\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n // Share opacity and color with line.\n symbol.setColor(visualColor);\n symbol.style.opacity = lineStyle.opacity;\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n var lineState = line.getState(stateName);\n\n if (lineState) {\n var lineStateStyle = lineState.style || {};\n var state = symbol.ensureState(stateName);\n var stateStyle = state.style || (state.style = {});\n\n if (lineStateStyle.stroke != null) {\n stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\n }\n\n if (lineStateStyle.opacity != null) {\n stateStyle.opacity = lineStateStyle.opacity;\n }\n }\n }\n\n symbol.markRedraw();\n }\n }, this);\n var rawVal = seriesModel.getRawValue(idx);\n setLabelStyle(this, labelStatesModels, {\n labelDataIndex: idx,\n labelFetcher: {\n getFormattedLabel: function (dataIndex, stateName) {\n return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\n }\n },\n inheritColor: visualColor || '#000',\n defaultOpacity: lineStyle.opacity,\n defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + ''\n });\n var label = this.getTextContent(); // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (label) {\n var labelNormalModel = labelStatesModels.normal;\n label.__align = label.style.align;\n label.__verticalAlign = label.style.verticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelNormalModel.get('position') || 'middle';\n var distance = labelNormalModel.get('distance');\n\n if (!isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n this.setTextConfig({\n position: null,\n local: true,\n inside: false // Can't be inside for stroke element.\n\n });\n enableHoverEmphasis(this);\n };\n\n Line.prototype.highlight = function () {\n enterEmphasis(this);\n };\n\n Line.prototype.downplay = function () {\n leaveEmphasis(this);\n };\n\n Line.prototype.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n };\n\n Line.prototype.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n };\n\n Line.prototype.beforeUpdate = function () {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.getTextContent(); // Quick reject\n\n if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scaleX) {\n invScale /= parentNode.scaleX;\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n function setSymbolRotation(symbol, percent) {\n // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n var specifiedRotation = symbol.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(percent);\n symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbol.attr('rotation', specifiedRotation);\n }\n }\n\n if (symbolFrom) {\n symbolFrom.setPosition(fromPos);\n setSymbolRotation(symbolFrom, 0);\n symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\n symbolFrom.markRedraw();\n }\n\n if (symbolTo) {\n symbolTo.setPosition(toPos);\n setSymbolRotation(symbolTo, 1);\n symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\n symbolTo.markRedraw();\n }\n\n if (label && !label.ignore) {\n label.x = label.y = 0;\n label.originX = label.originY = 0;\n var textAlign = void 0;\n var textVerticalAlign = void 0;\n var distance = label.__labelDistance;\n var distanceX = distance[0] * invScale;\n var distanceY = distance[1] * invScale;\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n var dir = tangent[0] < 0 ? -1 : 1;\n\n if (label.__position !== 'start' && label.__position !== 'end') {\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.rotation = rotation;\n }\n\n var dy = void 0;\n\n switch (label.__position) {\n case 'insideStartTop':\n case 'insideMiddleTop':\n case 'insideEndTop':\n case 'middle':\n dy = -distanceY;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideStartBottom':\n case 'insideMiddleBottom':\n case 'insideEndBottom':\n dy = distanceY;\n textVerticalAlign = 'top';\n break;\n\n default:\n dy = 0;\n textVerticalAlign = 'middle';\n }\n\n switch (label.__position) {\n case 'end':\n label.x = d[0] * distanceX + toPos[0];\n label.y = d[1] * distanceY + toPos[1];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n break;\n\n case 'start':\n label.x = -d[0] * distanceX + fromPos[0];\n label.y = -d[1] * distanceY + fromPos[1];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n break;\n\n case 'insideStartTop':\n case 'insideStart':\n case 'insideStartBottom':\n label.x = distanceX * dir + fromPos[0];\n label.y = fromPos[1] + dy;\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n label.originX = -distanceX * dir;\n label.originY = -dy;\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n label.x = cp[0];\n label.y = cp[1] + dy;\n textAlign = 'center';\n label.originY = -dy;\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n label.x = -distanceX * dir + toPos[0];\n label.y = toPos[1] + dy;\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n label.originX = distanceX * dir;\n label.originY = -dy;\n break;\n }\n\n label.scaleX = label.scaleY = invScale;\n label.setStyle({\n // Use the user specified text align and baseline first\n verticalAlign: label.__verticalAlign || textVerticalAlign,\n align: label.__align || textAlign\n });\n }\n };\n\n return Line;\n}(graphic.Group);\n\nexport default Line;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic';\nimport LineGroup from './Line';\nimport { getLabelStatesModels } from '../../label/labelStyle';\n\nvar LineDraw =\n/** @class */\nfunction () {\n function LineDraw(LineCtor) {\n this.group = new graphic.Group();\n this._LineCtor = LineCtor || LineGroup;\n }\n\n LineDraw.prototype.isPersistent = function () {\n return true;\n };\n\n ;\n\n LineDraw.prototype.updateData = function (lineData) {\n var _this = this;\n\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n _this._doAdd(lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n };\n\n ;\n\n LineDraw.prototype.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n };\n\n ;\n\n LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n };\n\n ;\n\n LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._LineCtor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n };\n\n ;\n\n LineDraw.prototype.remove = function () {\n this.group.removeAll();\n };\n\n ;\n\n LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new this._LineCtor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n this.group.add(el);\n };\n\n LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n this.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n this.group.add(itemEl);\n };\n\n return LineDraw;\n}();\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n emphasisLineStyle: hostModel.getModel(['emphasis', 'lineStyle']).getLineStyle(),\n blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\n selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\n labelStatesModels: getLabelStatesModels(hostModel)\n };\n}\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nexport default LineDraw;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol } from '../../util/symbol';\nimport * as graphic from '../../util/graphic';\nimport { getECData } from '../../util/innerStore';\nimport { enterEmphasis, leaveEmphasis, enableHoverEmphasis } from '../../util/states';\nimport { parsePercent } from '../../util/number';\nimport { getDefaultLabel } from './labelHelper';\nimport { extend, isArray, retrieve2 } from 'zrender/lib/core/util';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle';\nimport ZRImage from 'zrender/lib/graphic/Image';\n\nvar Symbol =\n/** @class */\nfunction (_super) {\n __extends(Symbol, _super);\n\n function Symbol(data, idx, seriesScope, opts) {\n var _this = _super.call(this) || this;\n\n _this.updateData(data, idx, seriesScope, opts);\n\n return _this;\n }\n\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll(); // let symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n };\n /**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(null, toLastFrame);\n };\n /**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\n Symbol.prototype.getSymbolPath = function () {\n return this.childAt(0);\n };\n /**\n * Highlight symbol\n */\n\n\n Symbol.prototype.highlight = function () {\n enterEmphasis(this.childAt(0));\n };\n /**\n * Downplay symbol\n */\n\n\n Symbol.prototype.downplay = function () {\n leaveEmphasis(this.childAt(0));\n };\n /**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\n Symbol.prototype.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n };\n\n Symbol.prototype.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n };\n /**\n * Update symbol properties\n */\n\n\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = Symbol.getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n var disableAnimation = opts && opts.disableAnimation;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n var target = {\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n };\n disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n\n if (!disableAnimation) {\n var target = {\n scaleX: this._sizeX,\n scaleY: this._sizeY,\n style: {\n // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n opacity: symbolPath.style.opacity\n }\n };\n symbolPath.scaleX = symbolPath.scaleY = 0;\n symbolPath.style.opacity = 0;\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n }\n\n if (disableAnimation) {\n // Must stop remove animation manually if don't call initProps or updateProps.\n this.childAt(0).stopAnimation('remove');\n }\n\n this._seriesModel = seriesModel;\n };\n\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var emphasisItemStyle;\n var blurItemStyle;\n var selectItemStyle;\n var focus;\n var blurScope;\n var labelStatesModels;\n var hoverScale;\n var cursorStyle;\n\n if (seriesScope) {\n emphasisItemStyle = seriesScope.emphasisItemStyle;\n blurItemStyle = seriesScope.blurItemStyle;\n selectItemStyle = seriesScope.selectItemStyle;\n focus = seriesScope.focus;\n blurScope = seriesScope.blurScope;\n labelStatesModels = seriesScope.labelStatesModels;\n hoverScale = seriesScope.hoverScale;\n cursorStyle = seriesScope.cursorStyle;\n }\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n labelStatesModels = getLabelStatesModels(itemModel);\n hoverScale = emphasisModel.getShallow('scale');\n cursorStyle = itemModel.getShallow('cursor');\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n var symbolOffset = data.getItemVisual(idx, 'symbolOffset') || 0;\n\n if (symbolOffset) {\n if (!isArray(symbolOffset)) {\n symbolOffset = [symbolOffset, symbolOffset];\n }\n\n symbolPath.x = parsePercent(symbolOffset[0], symbolSize[0]);\n symbolPath.y = parsePercent(retrieve2(symbolOffset[1], symbolOffset[0]) || 0, symbolSize[1]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\n var symbolStyle = data.getItemVisual(idx, 'style');\n var visualColor = symbolStyle.fill;\n\n if (symbolPath instanceof ZRImage) {\n var pathStyle = symbolPath.style;\n symbolPath.useStyle(extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, symbolStyle));\n } else {\n if (symbolPath.__isEmptyBrush) {\n // fill and stroke will be swapped if it's empty.\n // So we cloned a new style to avoid it affecting the original style in visual storage.\n // TODO Better implementation. No empty logic!\n symbolPath.useStyle(extend({}, symbolStyle));\n } else {\n symbolPath.useStyle(symbolStyle);\n } // Disable decal because symbol scale will been applied on the decal.\n\n\n symbolPath.style.decal = null;\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n symbolPath.style.strokeNoScale = true;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = this._z2;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n this._z2 = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n this._z2 = null;\n }\n\n var useNameLabel = opts && opts.useNameLabel;\n setLabelStyle(symbolPath, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n inheritColor: visualColor,\n defaultOpacity: symbolStyle.opacity\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n this._sizeX = symbolSize[0] / 2;\n this._sizeY = symbolSize[1] / 2;\n var emphasisState = symbolPath.ensureState('emphasis');\n emphasisState.style = emphasisItemStyle;\n symbolPath.ensureState('select').style = selectItemStyle;\n symbolPath.ensureState('blur').style = blurItemStyle;\n\n if (hoverScale) {\n var scaleRatio = Math.max(1.1, 3 / this._sizeY);\n emphasisState.scaleX = this._sizeX * scaleRatio;\n emphasisState.scaleY = this._sizeY * scaleRatio;\n }\n\n this.setSymbolScale(1);\n enableHoverEmphasis(this, focus, blurScope);\n };\n\n Symbol.prototype.setSymbolScale = function (scale) {\n this.scaleX = this.scaleY = scale;\n };\n\n Symbol.prototype.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0);\n var seriesModel = this._seriesModel;\n var dataIndex = getECData(this).dataIndex;\n var animationOpt = opt && opt.animation; // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n if (opt && opt.fadeLabel) {\n var textContent = symbolPath.getTextContent();\n\n if (textContent) {\n graphic.removeElement(textContent, {\n style: {\n opacity: 0\n }\n }, seriesModel, {\n dataIndex: dataIndex,\n removeOpt: animationOpt,\n cb: function () {\n symbolPath.removeTextContent();\n }\n });\n }\n } else {\n symbolPath.removeTextContent();\n }\n\n graphic.removeElement(symbolPath, {\n style: {\n opacity: 0\n },\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: dataIndex,\n cb: cb,\n removeOpt: animationOpt\n });\n };\n\n Symbol.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return isArray(symbolSize) ? symbolSize.slice() : [+symbolSize, +symbolSize];\n };\n\n return Symbol;\n}(graphic.Group);\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nexport default Symbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as graphic from '../../util/graphic';\nimport SymbolClz from './Symbol';\nimport { isObject } from 'zrender/lib/core/util';\nimport { getLabelStatesModels } from '../../label/labelStyle';\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n var emphasisModel = seriesModel.getModel('emphasis');\n return {\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n focus: emphasisModel.get('focus'),\n blurScope: emphasisModel.get('blurScope'),\n hoverScale: emphasisModel.get('scale'),\n labelStatesModels: getLabelStatesModels(seriesModel),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar SymbolDraw =\n/** @class */\nfunction () {\n function SymbolDraw(SymbolCtor) {\n this.group = new graphic.Group();\n this._SymbolCtor = SymbolCtor || SymbolClz;\n }\n /**\n * Update symbols draw by new data\n */\n\n\n SymbolDraw.prototype.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._SymbolCtor;\n var disableAnimation = opt.disableAnimation;\n var seriesScope = makeSeriesScope(data);\n var symbolUpdateOpt = {\n disableAnimation: disableAnimation\n };\n\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n return data.getItemLayout(idx);\n }; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = getSymbolPoint(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = getSymbolPoint(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.setPosition(point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n var target = {\n x: point[0],\n y: point[1]\n };\n disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._getSymbolPoint = getSymbolPoint;\n this._data = data;\n };\n\n ;\n\n SymbolDraw.prototype.isPersistent = function () {\n return true;\n };\n\n ;\n\n SymbolDraw.prototype.updateLayout = function () {\n var _this = this;\n\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = _this._getSymbolPoint(idx);\n\n el.setPosition(point);\n el.markRedraw();\n });\n }\n };\n\n ;\n\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n };\n\n ;\n /**\n * Update symbols draw by new data\n */\n\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.setPosition(point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n };\n\n ;\n\n SymbolDraw.prototype.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n };\n\n ;\n return SymbolDraw;\n}();\n\nexport default SymbolDraw;"],"sourceRoot":""}