chunk-vendors-4ff468b3.0f758b01.js.map 162 KB

1
  1. {"version":3,"file":"js/chunk-vendors-4ff468b3.0f758b01.js","mappings":"0FAoBA,IAAIA,EAAU,EAAQ,OAElBC,EAAO,EAAQ,OAEfC,EAAS,EAAQ,OAEjBC,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvBC,EAAO,EAAQ,OAEfC,EAAY,EAAQ,OA+BxB,SAASC,EAAWC,EAAUC,EAAKC,GACjCV,EAAQW,MAAMC,KAAKC,MACnBA,KAAKC,IAAID,KAAKE,WAAWP,EAAUC,EAAKC,IAExCG,KAAKG,oBAAoBR,EAAUC,EACrC,CAEA,IAAIQ,EAAkBV,EAAWW,UAEjCD,EAAgBF,WAAa,SAAUP,EAAUC,EAAKC,GACpD,OAAO,IAAIT,EAAKO,EAAUC,EAAKC,EACjC,EAEAO,EAAgBD,oBAAsB,SAAUR,EAAUC,GACxD,IAAIU,EAAYX,EAASY,aAAaX,GAClCY,EAAcF,EAAUG,SAAS,UACjCC,EAAOF,EAAYG,IAAI,cACvBC,EAAaJ,EAAYG,IAAI,UAE5BtB,EAAOwB,QAAQH,KAClBA,EAAO,CAACA,EAAMA,IAGhB,IAAII,EAAQN,EAAYG,IAAI,UAAYhB,EAASoB,cAAcnB,EAAK,SAChEoB,EAAShB,KAAKiB,QAAQ,GAEtBjB,KAAKkB,cAAgBN,IAEvBZ,KAAKmB,OAAOH,GACZA,EAASzB,EAAaqB,GAAa,IAAM,GAAK,EAAG,EAAGE,GACpDE,EAAOI,GAAK,IACZJ,EAAOK,SAAU,EACjBrB,KAAKC,IAAIe,IAINA,IAKLA,EAAOM,SAAS,cAAeR,GAC/BE,EAAOM,SAASd,EAAYe,aAAa,CAAC,WAC1CP,EAAOQ,KAAK,QAASd,GACrBM,EAAOS,SAASX,GAChBE,EAAOQ,KAAK,QAASd,GACrBV,KAAKkB,YAAcN,EACnBZ,KAAK0B,aAAehB,EAEpBV,KAAK2B,uBAAuBhC,EAAUa,EAAaZ,GACrD,EAEAQ,EAAgBuB,uBAAyB,SAAUhC,EAAUa,EAAaZ,GACxE,IAAIoB,EAAShB,KAAKiB,QAAQ,GAE1B,GAAKD,EAAL,CAIA,IAAIY,EAAO5B,KACP6B,EAASlC,EAASmC,cAAclC,GAChCmC,EAAqC,IAA5BvB,EAAYG,IAAI,UACzBqB,EAAOxB,EAAYG,IAAI,QACvBsB,EAAgBzB,EAAYG,IAAI,iBAChCuB,EAAY7C,EAAO8C,SAAS3B,EAAYG,IAAI,UAAU,SAAUf,GAClE,OAAOA,EAAMD,EAASyC,QAAUL,EAAS,CAC3C,IACIM,EAAmC,oBAAdH,EASzB,GAPAlB,EAAOsB,QAAS,EAChBtC,KAAKuC,sBAAsBvB,EAAQa,GAE/BI,EAAgB,IAClBF,EAAS/B,KAAKwC,cAAcxB,GAAUiB,EAAgB,KAGpDF,IAAW/B,KAAKyC,SAAWT,IAAShC,KAAK0C,MAAO,CAClD1B,EAAO2B,gBACP,IAAIC,EAAQV,EAERG,IACFO,EAAQV,EAAUtC,IAGhBoB,EAAO6B,IAAM,IACfD,GAASb,EAASf,EAAO6B,KAG3B7B,EAAO6B,IAAM,EACb,IAAIC,EAAW9B,EAAO+B,QAAQ,GAAIf,GAAMgB,KAAKjB,EAAQ,CACnDc,IAAK,IACJD,MAAMA,GAAOK,QAAO,WACrBrB,EAAKsB,qBAAqBlC,EAC5B,IAEKgB,GACHc,EAASK,MAAK,WACZvB,EAAKT,OAAOH,EACd,IAGF8B,EAASM,OACX,CAEApD,KAAKyC,QAAUV,EACf/B,KAAK0C,MAAQV,CAhDb,CAiDF,EAEA5B,EAAgBoC,cAAgB,SAAUxB,GAExC,OAAOxB,EAAK6D,KAAKrC,EAAOsC,KAAMtC,EAAOuC,OAAS/D,EAAK6D,KAAKrC,EAAOuC,MAAOvC,EAAOwC,KAC/E,EAEApD,EAAgBmC,sBAAwB,SAAUvB,EAAQa,GACxDb,EAAOsC,KAAOzB,EAAO,GACrBb,EAAOwC,KAAO3B,EAAO,GACrBb,EAAOuC,MAAQ1B,EAAO,IAAM,EAAEA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,GAAIA,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAClG,EAEAzB,EAAgBqD,WAAa,SAAU9D,EAAUC,EAAKC,GACpDG,KAAKiB,QAAQ,GAAGwC,WAAW9D,EAAUC,EAAKC,GAE1CG,KAAKG,oBAAoBR,EAAUC,EACrC,EAEAQ,EAAgB8C,qBAAuB,SAAUlC,GAC/C,IAAI0C,EAAK1C,EAAOsC,KACZK,EAAK3C,EAAOwC,KACZI,EAAM5C,EAAOuC,MACbM,EAAI7C,EAAO6B,IACXiB,EAAM9C,EAAO+C,SACbC,EAAU,CAACF,EAAI,GAAIA,EAAI,IACvBG,EAAcxE,EAAUwE,YACxBC,EAAwBzE,EAAUyE,sBACtCJ,EAAI,GAAKG,EAAYP,EAAG,GAAIE,EAAI,GAAID,EAAG,GAAIE,GAC3CC,EAAI,GAAKG,EAAYP,EAAG,GAAIE,EAAI,GAAID,EAAG,GAAIE,GAE3C,IAAIM,EAAKD,EAAsBR,EAAG,GAAIE,EAAI,GAAID,EAAG,GAAIE,GACjDO,EAAKF,EAAsBR,EAAG,GAAIE,EAAI,GAAID,EAAG,GAAIE,GAGrD,GAFA7C,EAAOqD,UAAYC,KAAKC,MAAMH,EAAID,GAAMG,KAAKE,GAAK,EAEzB,SAArBxE,KAAKkB,aAA+C,SAArBlB,KAAKkB,aAA+C,cAArBlB,KAAKkB,YACrE,QAAuBuD,IAAnBzD,EAAO0D,SAAyB1D,EAAO0D,QAAU1D,EAAO6B,IAAK,CAC/D,IAAI8B,EAAmC,KAA1BnF,EAAK6D,KAAKW,EAASF,GAChC9C,EAAOQ,KAAK,QAAS,CAACR,EAAO4D,MAAM,GAAID,IAE7B,IAANd,IACFC,EAAI,GAAKE,EAAQ,IAAMF,EAAI,GAAKE,EAAQ,IAAM,EAC9CF,EAAI,GAAKE,EAAQ,IAAMF,EAAI,GAAKE,EAAQ,IAAM,EAElD,MAAO,GAAuB,IAAnBhD,EAAO0D,QAAe,CAE3BC,EAAS,EAAInF,EAAK6D,KAAKK,EAAII,GAC/B9C,EAAOQ,KAAK,QAAS,CAACR,EAAO4D,MAAM,GAAID,GACzC,MACE3D,EAAOQ,KAAK,QAASxB,KAAK0B,cAI9BV,EAAO0D,QAAU1D,EAAO6B,IACxB7B,EAAOsB,QAAS,CAClB,EAEAlC,EAAgByE,aAAe,SAAUlF,EAAUC,GACjDI,KAAKiB,QAAQ,GAAG4D,aAAalF,EAAUC,GACvC,IAAIY,EAAcb,EAASY,aAAaX,GAAKa,SAAS,UAEtDT,KAAK2B,uBAAuBhC,EAAUa,EAAaZ,EACrD,EAEAP,EAAOyF,SAASpF,EAAYP,EAAQW,OACpC,IAAIiF,EAAWrF,EACfsF,EAAOC,QAAUF,C,wBCvNjB,IAAIG,EAAW,EAAQ,OAEnB7F,EAAS,EAAQ,OAEjBK,EAAa,EAAQ,OAErBF,EAAO,EAAQ,OA+BnB,SAAS2F,EAAexF,EAAUC,EAAKC,GACrCH,EAAWK,KAAKC,KAAML,EAAUC,EAAKC,GACrCG,KAAKoF,WAAa,EAClBpF,KAAKqF,kBAAoB,CAC3B,CAEA,IAAIC,EAAsBH,EAAe9E,UAEzCiF,EAAoBpF,WAAa,SAAUP,EAAUC,EAAKC,GACxD,OAAO,IAAIqF,EAASvF,EAAUC,EAAKC,EACrC,EAGAyF,EAAoB/C,sBAAwB,SAAUvB,EAAQa,GAC5D7B,KAAKuF,QAAU1D,EAIf,IAHA,IAAI2D,EAAY,CAAC,GACbC,EAAM,EAEDC,EAAI,EAAGA,EAAI7D,EAAO8D,OAAQD,IAAK,CACtC,IAAIhC,EAAK7B,EAAO6D,EAAI,GAChB/B,EAAK9B,EAAO6D,GAChBD,GAAOjG,EAAK6D,KAAKK,EAAIC,GACrB6B,EAAUI,KAAKH,EACjB,CAEA,GAAY,IAARA,EAAJ,CAIA,IAASC,EAAI,EAAGA,EAAIF,EAAUG,OAAQD,IACpCF,EAAUE,IAAMD,EAGlBzF,KAAK6F,SAAWL,EAChBxF,KAAK8F,QAAUL,CAPf,CAQF,EAGAH,EAAoB9C,cAAgB,SAAUxB,GAC5C,OAAOhB,KAAK8F,OACd,EAGAR,EAAoBpC,qBAAuB,SAAUlC,GACnD,IAAI6C,EAAI7C,EAAO6B,IACXhB,EAAS7B,KAAKuF,QACdQ,EAAU/F,KAAK6F,SACfJ,EAAM5D,EAAO8D,OAEjB,GAAKI,EAAL,CAKA,IAAIC,EAAYhG,KAAKoF,WAGrB,GAAIvB,EAAI7D,KAAKqF,kBAAmB,CAG9B,IAAIjC,EAAQkB,KAAK2B,IAAID,EAAY,EAAGP,EAAM,GAE1C,IAAKS,EAAQ9C,EAAO8C,GAAS,EAAGA,IAC9B,GAAIH,EAAQG,IAAUrC,EACpB,MAKJqC,EAAQ5B,KAAK2B,IAAIC,EAAOT,EAAM,EAChC,KAAO,CACL,IAAK,IAAIS,EAAQF,EAAWE,EAAQT,EAAKS,IACvC,GAAIH,EAAQG,GAASrC,EACnB,MAIJqC,EAAQ5B,KAAK2B,IAAIC,EAAQ,EAAGT,EAAM,EACpC,CAEAjG,EAAK2G,KAAKnF,EAAO+C,SAAUlC,EAAOqE,GAAQrE,EAAOqE,EAAQ,IAAKrC,EAAIkC,EAAQG,KAAWH,EAAQG,EAAQ,GAAKH,EAAQG,KAClH,IAAI/B,EAAKtC,EAAOqE,EAAQ,GAAG,GAAKrE,EAAOqE,GAAO,GAC1C9B,EAAKvC,EAAOqE,EAAQ,GAAG,GAAKrE,EAAOqE,GAAO,GAC9ClF,EAAOqD,UAAYC,KAAKC,MAAMH,EAAID,GAAMG,KAAKE,GAAK,EAClDxE,KAAKoF,WAAac,EAClBlG,KAAKqF,kBAAoBxB,EACzB7C,EAAOsB,QAAS,CAlChB,CAmCF,EAEAjD,EAAOyF,SAASK,EAAgBzF,GAChC,IAAIqF,EAAWI,EACfH,EAAOC,QAAUF,C,wBChIjB,IAAI1F,EAAS,EAAQ,OAEjBC,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvB6G,EAAW,EAAQ,OAEnBtG,EAAQsG,EAAStG,MAEjBuG,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvBC,EAAY,EAAQ,OAyBpBC,EAAuB,EAE3B,SAASC,EAAoBC,GAK3B,OAJKrH,EAAOwB,QAAQ6F,KAClBA,EAAa,EAAEA,GAAaA,IAGvBA,CACT,CAEA,SAASC,EAAiBC,EAAaC,GACrC,IAAI/F,EAAQ+F,EAAUC,mBAAqBD,EAAU/F,MACrD8F,EAAYG,WAAU,SAAUC,GAC9BA,EAAWxF,KAAK,CACdyF,EAAGJ,EAAUI,EACbC,OAAQL,EAAUK,OAClBC,MAAO,CACLC,OAAgC,WAAxBP,EAAUQ,UAAyBvG,EAAQ,KACnDwG,KAA8B,SAAxBT,EAAUQ,UAAuBvG,EAAQ,OAGrD,GACF,CASA,SAASyG,EAAaC,EAAM5H,GAC1BE,EAAMC,KAAKC,MACX,IAAIgB,EAAS,IAAIuF,EAAUiB,EAAM5H,GAC7BgH,EAAc,IAAI9G,EACtBE,KAAKC,IAAIe,GACThB,KAAKC,IAAI2G,GAETA,EAAYa,aAAe,WACzBzH,KAAKwB,KAAKR,EAAO0G,WACnB,EAEA1H,KAAKyD,WAAW+D,EAAM5H,EACxB,CAEA,IAAI+H,EAAoBJ,EAAalH,UAErCsH,EAAkBC,oBAAsB,WACtC5H,KAAKiB,QAAQ,GAAG4G,WAClB,EAEAF,EAAkBG,qBAAuB,SAAUjB,GAKjD,IAJA,IAAIjG,EAAaiG,EAAUjG,WACvBE,EAAQ+F,EAAU/F,MAClB8F,EAAc5G,KAAKiB,QAAQ,GAEtByE,EAAI,EAAGA,EAAIc,EAAsBd,IAAK,CAI7C,IAAIsB,EAAazH,EAAaqB,GAAa,GAAI,EAAG,EAAG,EAAGE,GACxDkG,EAAWxF,KAAK,CACd2F,MAAO,CACLY,eAAe,GAEjB3G,GAAI,GACJ4G,QAAQ,EACRpD,MAAO,CAAC,GAAK,MAEf,IAAIhC,GAAS8C,EAAIc,EAAuBK,EAAU9E,OAAS8E,EAAUoB,aAErEjB,EAAWjE,QAAQ,IAAI,GAAMC,KAAK6D,EAAU9E,OAAQ,CAClD6C,MAAO,CAACiC,EAAUqB,YAAc,EAAGrB,EAAUqB,YAAc,KAC1DtF,MAAMA,GAAOQ,QAChB4D,EAAWmB,cAAa,GAAMnF,KAAK6D,EAAU9E,OAAQ,CACnDqG,QAAS,IACRxF,MAAMA,GAAOQ,QAChBwD,EAAY3G,IAAI+G,EAClB,CAEAL,EAAiBC,EAAaC,EAChC,EAMAc,EAAkBU,sBAAwB,SAAUxB,GAMlD,IALA,IAAIyB,EAAetI,KAAKuI,WACpB3B,EAAc5G,KAAKiB,QAAQ,GAE3BuH,EAAkB,CAAC,aAAc,SAAU,eAEtC9C,EAAI,EAAGA,EAAI8C,EAAgB7C,OAAQD,IAAK,CAC/C,IAAI+C,EAAWD,EAAgB9C,GAE/B,GAAI4C,EAAaG,KAAc5B,EAAU4B,GAGvC,OAFAzI,KAAK4H,2BACL5H,KAAK8H,qBAAqBjB,EAG9B,CAEAF,EAAiBC,EAAaC,EAChC,EAMAc,EAAkBe,UAAY,WAC5B1I,KAAK2I,QAAQ,WACf,EAMAhB,EAAkBiB,SAAW,WAC3B5I,KAAK2I,QAAQ,SACf,EAQAhB,EAAkBlE,WAAa,SAAU+D,EAAM5H,GAC7C,IAAIiJ,EAAcrB,EAAKsB,UACvB9I,KAAKiB,QAAQ,GAAGwC,WAAW+D,EAAM5H,GACjC,IAAIgH,EAAc5G,KAAKiB,QAAQ,GAC3BX,EAAYkH,EAAKjH,aAAaX,GAC9BgB,EAAa4G,EAAKzG,cAAcnB,EAAK,UACrC8G,EAAaD,EAAoBe,EAAKzG,cAAcnB,EAAK,eACzDkB,EAAQ0G,EAAKzG,cAAcnB,EAAK,SACpCgH,EAAYpF,KAAK,QAASkF,GAC1BE,EAAYmC,UAAS,SAAU/B,GAC7BA,EAAWxF,KAAK,CACd8F,KAAMxG,GAEV,IACA,IAAIkI,EAAe1I,EAAU2I,WAAW,gBAExC,GAAID,EAAc,CAChB,IAAIlF,EAAM8C,EAAY7C,SACtBD,EAAI,GAAKwC,EAAa0C,EAAa,GAAItC,EAAW,IAClD5C,EAAI,GAAKwC,EAAa0C,EAAa,GAAItC,EAAW,GACpD,CAEA,IAAIwC,EAAe1B,EAAKzG,cAAcnB,EAAK,gBAC3CgH,EAAYvC,UAAY6E,GAAgB,GAAK5E,KAAKE,GAAK,KAAO,EAC9D,IAAIqC,EAAY,CAAC,EAajB,GAZAA,EAAUsC,aAAeN,EAAYlI,IAAI,gBACzCkG,EAAUqB,YAAc5H,EAAUK,IAAI,sBACtCkG,EAAUQ,UAAY/G,EAAUK,IAAI,0BACpCkG,EAAU9E,OAAgD,IAAvCzB,EAAUK,IAAI,uBACjCkG,EAAUoB,aAAerI,EAAM4H,EAAKpF,QACpCyE,EAAUI,EAAI3G,EAAU2I,WAAW,MAAQ,EAC3CpC,EAAUK,OAAS5G,EAAU2I,WAAW,WAAa,EACrDpC,EAAUjG,WAAaA,EACvBiG,EAAU/F,MAAQA,EAClB+F,EAAUC,kBAAoBxG,EAAUK,IAAI,sBAC5CX,KAAKoJ,IAAI,aAAaA,IAAI,YAAYA,IAAI,YAAYA,IAAI,UAE3B,WAA3BvC,EAAUsC,aACZnJ,KAAKuI,WAAavI,KAAKqI,sBAAsBxB,GAAa7G,KAAK8H,qBAAqBjB,GACpF7G,KAAKuI,WAAa1B,MACb,CAEL7G,KAAKuI,WAAa,KAClBvI,KAAK4H,sBACL,IAAI5G,EAAShB,KAAKiB,QAAQ,GAEtBoI,EAAa,WACfrI,EAAO0H,YAEwB,WAA3B7B,EAAUsC,cACZnJ,KAAK8H,qBAAqBjB,EAE9B,EAEIyC,EAAW,WACbtI,EAAO4H,WAEwB,WAA3B/B,EAAUsC,cACZnJ,KAAK4H,qBAET,EAEA5H,KAAKuJ,GAAG,YAAaF,EAAYrJ,MAAMuJ,GAAG,WAAYD,EAAUtJ,MAAMuJ,GAAG,WAAYF,EAAYrJ,MAAMuJ,GAAG,SAAUD,EAAUtJ,KAChI,CAEAA,KAAKuI,WAAa1B,CACpB,EAEAc,EAAkB6B,QAAU,SAAUC,GACpCzJ,KAAKoJ,IAAI,aAAaA,IAAI,YAAYA,IAAI,YAAYA,IAAI,UAC1DK,GAAMA,GACR,EAEApK,EAAOyF,SAASyC,EAAczH,GAC9B,IAAIiF,EAAWwC,EACfvC,EAAOC,QAAUF,C,wBClPjB,IAAI5F,EAAU,EAAQ,OAElBuK,EAAyB,EAAQ,OAEjCC,EAAc,EAAQ,OAEtBC,EAAmB,EAAQ,OAqB3BC,EAAiB1K,EAAQ2K,YAAY,CACvCC,MAAO,CACLC,UAAU,EACVC,UAAW,EACXC,KAAM,IAERC,UAAW,SAAUC,EAAML,GACzB,IAAIG,EAAOH,EAAMG,KACbD,EAAYF,EAAME,UAEtB,GAAIF,EAAMC,SACR,IAAK,IAAItE,EAAI,EAAGA,EAAIwE,EAAKvE,QAAS,CAChC,IAAIvD,EAAQ8H,EAAKxE,KAEjB,GAAItD,EAAQ,EAAG,CACbgI,EAAKC,OAAOH,EAAKxE,KAAMwE,EAAKxE,MAE5B,IAAK,IAAI4E,EAAI,EAAGA,EAAIlI,EAAOkI,IACzBF,EAAKG,OAAOL,EAAKxE,KAAMwE,EAAKxE,KAEhC,CACF,MAEA,IAASA,EAAI,EAAGA,EAAIwE,EAAKvE,QAAS,CAChC,IAAI6E,EAAKN,EAAKxE,KACV+E,EAAKP,EAAKxE,KACVgF,EAAKR,EAAKxE,KACViF,EAAKT,EAAKxE,KAGd,GAFA0E,EAAKC,OAAOG,EAAIC,GAEZR,EAAY,EAAG,CACjB,IAAIW,GAAMJ,EAAKE,GAAM,GAAKD,EAAKE,GAAMV,EACjCY,GAAMJ,EAAKE,GAAM,GAAKD,EAAKF,GAAMP,EACrCG,EAAKU,iBAAiBF,EAAIC,EAAIH,EAAIC,EACpC,MACEP,EAAKG,OAAOG,EAAIC,EAEpB,CAEJ,EACAI,cAAe,SAAUC,EAAGC,GAC1B,IAAIlB,EAAQ/J,KAAK+J,MACbG,EAAOH,EAAMG,KACbD,EAAYF,EAAME,UAEtB,GAAIF,EAAMC,SAGR,IAFA,IAAIkB,EAAY,EAEPxF,EAAI,EAAGA,EAAIwE,EAAKvE,QAAS,CAChC,IAAIvD,EAAQ8H,EAAKxE,KAEjB,GAAItD,EAAQ,EAIV,IAHA,IAAIoI,EAAKN,EAAKxE,KACV+E,EAAKP,EAAKxE,KAEL4E,EAAI,EAAGA,EAAIlI,EAAOkI,IAAK,CAC9B,IAAII,EAAKR,EAAKxE,KACViF,EAAKT,EAAKxE,KAEd,GAAIiE,EAAYwB,cAAcX,EAAIC,EAAIC,EAAIC,GACxC,OAAOO,CAEX,CAGFA,GACF,MAIA,IAFIA,EAAY,EAEPxF,EAAI,EAAGA,EAAIwE,EAAKvE,QAAS,CAC5B6E,EAAKN,EAAKxE,KACV+E,EAAKP,EAAKxE,KACVgF,EAAKR,EAAKxE,KACViF,EAAKT,EAAKxE,KAEd,GAAIuE,EAAY,EAAG,CACjB,IAAIW,GAAMJ,EAAKE,GAAM,GAAKD,EAAKE,GAAMV,EACjCY,GAAMJ,EAAKE,GAAM,GAAKD,EAAKF,GAAMP,EAErC,GAAIL,EAAiBuB,cAAcX,EAAIC,EAAIG,EAAIC,EAAIH,EAAIC,GACrD,OAAOO,CAEX,MACE,GAAIvB,EAAYwB,cAAcX,EAAIC,EAAIC,EAAIC,GACxC,OAAOO,EAIXA,GACF,CAGF,OAAQ,CACV,IAGF,SAASE,IACPpL,KAAKqL,MAAQ,IAAIlM,EAAQW,KAC3B,CAEA,IAAIwL,EAAiBF,EAAc/K,UAEnCiL,EAAeC,aAAe,WAC5B,OAAQvL,KAAKwL,YACf,EAOAF,EAAe7H,WAAa,SAAU+D,GACpCxH,KAAKqL,MAAMxD,YACX,IAAI4D,EAAS,IAAI5B,EAAe,CAC9B6B,WAAW,EACXC,OAAQ,YAEVF,EAAOG,SAAS,CACd1B,KAAM1C,EAAKqE,UAAU,iBAGvB7L,KAAK8L,WAAWL,EAAQjE,GAGxBxH,KAAKqL,MAAMpL,IAAIwL,GACfzL,KAAKwL,aAAe,IACtB,EAMAF,EAAeS,yBAA2B,SAAUvE,GAClDxH,KAAKqL,MAAMxD,YAEX7H,KAAKgM,oBAEDxE,EAAKpF,QAAU,KACZpC,KAAKwL,eACRxL,KAAKwL,aAAe,IAAI9B,EAAuB,CAC7C1B,QAAQ,KAIZhI,KAAKqL,MAAMpL,IAAID,KAAKwL,eAEpBxL,KAAKwL,aAAe,IAExB,EAMAF,EAAeW,kBAAoB,SAAUC,EAAY1E,GACvD,IAAIiE,EAAS,IAAI5B,EACjB4B,EAAOG,SAAS,CACd1B,KAAM1C,EAAKqE,UAAU,iBAGvB7L,KAAK8L,WAAWL,EAAQjE,IAAQxH,KAAKwL,cAEhCxL,KAAKwL,aAMRxL,KAAKwL,aAAaW,eAAeV,GAAQ,IALzCA,EAAOC,WAAY,EACnBD,EAAOE,OAAS,UAChBF,EAAOW,aAAeF,EAAW9I,MACjCpD,KAAKqL,MAAMpL,IAAIwL,GAInB,EAMAH,EAAenK,OAAS,WACtBnB,KAAKgM,oBAELhM,KAAKwL,aAAe,KACpBxL,KAAKqL,MAAMxD,WACb,EAEAyD,EAAeQ,WAAa,SAAUL,EAAQjE,EAAM6E,GAClD,IAAIvD,EAAYtB,EAAKsB,UACrB2C,EAAOG,SAAS,CACd5B,SAAUlB,EAAUnI,IAAI,YACxBsJ,UAAWnB,EAAUnI,IAAI,yBAE3B8K,EAAOa,SAASxD,EAAUrI,SAAS,aAAa8L,gBAChDd,EAAOtE,MAAMY,eAAgB,EAC7B,IAAIyE,EAAchF,EAAKiF,UAAU,SAE7BD,GACFf,EAAOnK,SAAS,SAAUkL,GAG5Bf,EAAOnK,SAAS,QAEX+K,IAGHZ,EAAOiB,YAAc5D,EAAU4D,YAC/BjB,EAAOlC,GAAG,aAAa,SAAUoD,GAC/BlB,EAAOP,UAAY,KACnB,IAAIA,EAAYO,EAAOV,cAAc4B,EAAEC,QAASD,EAAEE,SAE9C3B,EAAY,IAEdO,EAAOP,UAAYA,EAAYO,EAAOW,aAE1C,IAEJ,EAEAd,EAAeU,kBAAoB,WACjC,IAAIc,EAAc9M,KAAKwL,aAEnBsB,GACFA,EAAYC,kBAEhB,EAEA,IAAIhI,EAAWqG,EACfpG,EAAOC,QAAUF,C,wBC5PjB,IAAI5F,EAAU,EAAQ,OAElBG,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvBmK,EAAyB,EAAQ,OAuBjCsD,EAAuB,EACvBC,EAAkB9N,EAAQ2K,YAAY,CACxCC,MAAO,CACLlI,OAAQ,MAEVqL,YAAa,KACbC,cAAe,KACfhD,UAAW,SAAUC,EAAML,GACzB,IAAIlI,EAASkI,EAAMlI,OACfnB,EAAOqJ,EAAMrJ,KACbwM,EAAclN,KAAKkN,YACnBE,EAAmBF,EAAYnD,MAC/BsD,EAAMjD,EAAKkD,WAAalD,EAAKkD,aAAelD,EAC5CmD,EAAWF,GAAO3M,EAAK,GAAKsM,EAEhC,IAAIO,EAIJ,IAAK,IAAI7H,EAAI,EAAGA,EAAI7D,EAAO8D,QAAS,CAClC,IAAIqF,EAAInJ,EAAO6D,KACXuF,EAAIpJ,EAAO6D,KAEX8H,MAAMxC,IAAMwC,MAAMvC,KAIlBjL,KAAKmN,gBAAkBnN,KAAKmN,cAAcM,QAAQzC,EAAGC,KAIzDmC,EAAiBpC,EAAIA,EAAItK,EAAK,GAAK,EACnC0M,EAAiBnC,EAAIA,EAAIvK,EAAK,GAAK,EACnC0M,EAAiBM,MAAQhN,EAAK,GAC9B0M,EAAiBO,OAASjN,EAAK,GAC/BwM,EAAY/C,UAAUC,EAAMgD,GAAkB,IAChD,CACF,EACAQ,WAAY,SAAUP,GACpB,IAAItD,EAAQ/J,KAAK+J,MACblI,EAASkI,EAAMlI,OACfnB,EAAOqJ,EAAMrJ,KACb6M,EAAW7M,EAAK,GAAKsM,EAEzB,GAAKO,EAAL,CAIAvN,KAAK6N,aAAaR,GAElB,IAAK,IAAI3H,EAAI,EAAGA,EAAI7D,EAAO8D,QAAS,CAClC,IAAIqF,EAAInJ,EAAO6D,KACXuF,EAAIpJ,EAAO6D,KAEX8H,MAAMxC,IAAMwC,MAAMvC,KAIlBjL,KAAKmN,gBAAkBnN,KAAKmN,cAAcM,QAAQzC,EAAGC,IAMzDoC,EAAIS,SAAS9C,EAAItK,EAAK,GAAK,EAAGuK,EAAIvK,EAAK,GAAK,EAAGA,EAAK,GAAIA,EAAK,IAC/D,CAEAV,KAAK+N,iBAAiBV,EArBtB,CAsBF,EACAtC,cAAe,SAAUC,EAAGC,GAW1B,IARA,IAAIlB,EAAQ/J,KAAK+J,MACblI,EAASkI,EAAMlI,OACfnB,EAAOqJ,EAAMrJ,KACbsN,EAAI1J,KAAK2J,IAAIvN,EAAK,GAAI,GACtBwN,EAAI5J,KAAK2J,IAAIvN,EAAK,GAAI,GAIjBd,EAAMiC,EAAO8D,OAAS,EAAI,EAAG/F,GAAO,EAAGA,IAAO,CACrD,IAAI8F,EAAU,EAAN9F,EACJ4K,EAAK3I,EAAO6D,GAAKsI,EAAI,EACrBvD,EAAK5I,EAAO6D,EAAI,GAAKwI,EAAI,EAE7B,GAAIlD,GAAKR,GAAMS,GAAKR,GAAMO,GAAKR,EAAKwD,GAAK/C,GAAKR,EAAKyD,EACjD,OAAOtO,CAEX,CAEA,OAAQ,CACV,IAGF,SAASuO,IACPnO,KAAKqL,MAAQ,IAAIlM,EAAQW,KAC3B,CAEA,IAAIsO,EAAmBD,EAAgB9N,UAEvC+N,EAAiB7C,aAAe,WAC9B,OAAQvL,KAAKwL,YACf,EASA4C,EAAiB3K,WAAa,SAAU+D,EAAM6G,GAC5CrO,KAAKqL,MAAMxD,YACX,IAAIyG,EAAW,IAAIrB,EAAgB,CACjCvB,WAAW,EACXC,OAAQ,YAEV2C,EAAS1C,SAAS,CAChB/J,OAAQ2F,EAAKqE,UAAU,kBAGzB7L,KAAK8L,WAAWwC,EAAU9G,GAAM,EAAO6G,GAEvCrO,KAAKqL,MAAMpL,IAAIqO,GACftO,KAAKwL,aAAe,IACtB,EAEA4C,EAAiBvJ,aAAe,SAAU2C,GACxC,IAAIxH,KAAKwL,aAAT,CAIA,IAAI3J,EAAS2F,EAAKqE,UAAU,gBAC5B7L,KAAKqL,MAAMtE,WAAU,SAAUwH,GAC7B,GAAwB,MAApBA,EAAMC,WAAoB,CAC5B,IAAI/I,EAA4C,GAArC8I,EAAME,SAAWF,EAAMC,YAC9BE,EAAgC,EAAnBH,EAAMC,WAAiB,EACxC3M,EAAS,IAAI8M,aAAa9M,EAAO+M,OAAQF,EAAYjJ,EACvD,CAEA8I,EAAM3C,SAAS,SAAU/J,EAC3B,GAXA,CAYF,EAEAuM,EAAiBrC,yBAA2B,SAAUvE,GACpDxH,KAAKqL,MAAMxD,YAEX7H,KAAKgM,oBAIDxE,EAAKpF,QAAU,KACZpC,KAAKwL,eACRxL,KAAKwL,aAAe,IAAI9B,EAAuB,CAC7C1B,QAAQ,KAIZhI,KAAKqL,MAAMpL,IAAID,KAAKwL,eAEpBxL,KAAKwL,aAAe,IAExB,EAEA4C,EAAiBnC,kBAAoB,SAAUC,EAAY1E,EAAM6G,GAC/D,IAAIC,EAEAtO,KAAKwL,cACP8C,EAAW,IAAIrB,EAEfjN,KAAKwL,aAAaW,eAAemC,GAAU,KAE3CA,EAAW,IAAIrB,EAAgB,CAC7BvB,WAAW,EACXC,OAAQ,UACR6C,WAAYtC,EAAW9I,MACvBqL,SAAUvC,EAAW2C,MAEvBP,EAASxB,aAAc,EACvB9M,KAAKqL,MAAMpL,IAAIqO,IAGjBA,EAAS1C,SAAS,CAChB/J,OAAQ2F,EAAKqE,UAAU,kBAGzB7L,KAAK8L,WAAWwC,EAAU9G,IAAQxH,KAAKwL,aAAc6C,EACvD,EAEAD,EAAiBtC,WAAa,SAAUwC,EAAU9G,EAAM6E,EAAegC,GACrE,IAAIvF,EAAYtB,EAAKsB,UACrBuF,EAAMA,GAAO,CAAC,EAYd,IAAI3N,EAAO8G,EAAKiF,UAAU,cAC1B6B,EAAS1C,SAAS,OAAQlL,aAAgBoO,MAAQpO,EAAO,CAACA,EAAMA,IAEhE4N,EAASnB,cAAgBkB,EAAIU,WAAa,KAE1CT,EAASpB,YAAc3N,EAAaiI,EAAKiF,UAAU,UAAW,EAAG,EAAG,EAAG,GAEvE6B,EAAS7M,SAAW6M,EAASpB,YAAYzL,SACzC,IAAIuN,EAAgBV,EAASvE,MAAMrJ,KAAK,GAAKsM,EAC7CsB,EAAShC,SACTxD,EAAUrI,SAAS,aAAac,aAAayN,EAAgB,CAAC,QAAS,aAAc,eAAiB,CAAC,WACvG,IAAIxC,EAAchF,EAAKiF,UAAU,SAE7BD,GACF8B,EAAS7M,SAAS+K,GAGfH,IAGHiC,EAAS5B,YAAc5D,EAAU4D,YACjC4B,EAAS/E,GAAG,aAAa,SAAUoD,GACjC2B,EAASpD,UAAY,KACrB,IAAIA,EAAYoD,EAASvD,cAAc4B,EAAEC,QAASD,EAAEE,SAEhD3B,GAAa,IAEfoD,EAASpD,UAAYA,GAAaoD,EAASE,YAAc,GAE7D,IAEJ,EAEAJ,EAAiBjN,OAAS,WACxBnB,KAAKgM,oBAELhM,KAAKwL,aAAe,KACpBxL,KAAKqL,MAAMxD,WACb,EAEAuG,EAAiBpC,kBAAoB,WACnC,IAAIc,EAAc9M,KAAKwL,aAEnBsB,GACFA,EAAYC,kBAEhB,EAEA,IAAIhI,EAAWoJ,EACfnJ,EAAOC,QAAUF,C,wBCzRjB,IAAI1F,EAAS,EAAQ,OAEjB4P,EAAS,EAAQ,OAEjBC,EAAa,EAAQ,OAErBC,EAAW,EAAQ,OAEnBhQ,EAAU,EAAQ,OAElBkH,EAAU,EAAQ,OAElB+I,EAAQ/I,EAAQ+I,MAwBhBC,EAAoB,CAAC,aAAc,YAEvC,SAASC,EAAkBC,GACzB,MAAO,IAAMA,EAAiB,MAChC,CAMA,SAAShQ,EAAaiQ,EAAM7P,EAAUC,GACpC,IAAIkB,EAAQnB,EAASoB,cAAcnB,EAAK,SACpCgB,EAAajB,EAASoB,cAAcnB,EAAK4P,GACzC9I,EAAa/G,EAASoB,cAAcnB,EAAK4P,EAAO,QAEpD,GAAK5O,GAA6B,SAAfA,EAAnB,CAIKvB,EAAOwB,QAAQ6F,KAClBA,EAAa,CAACA,EAAYA,IAG5B,IAAI+I,EAAaP,EAAW3P,aAAaqB,GAAa8F,EAAW,GAAK,GAAIA,EAAW,GAAK,EAAGA,EAAW,GAAIA,EAAW,GAAI5F,GAE3H,OADA2O,EAAWD,KAAOA,EACXC,CARP,CASF,CAEA,SAASvP,EAAW2B,GAClB,IAAI6N,EAAO,IAAIP,EAAS,CACtBK,KAAM,OACNG,kBAAkB,IAGpB,OADAC,EAAcF,EAAK3F,MAAOlI,GACnB6N,CACT,CAEA,SAASE,EAAcC,EAAahO,GAClCgO,EAAYnF,GAAK7I,EAAO,GAAG,GAC3BgO,EAAYlF,GAAK9I,EAAO,GAAG,GAC3BgO,EAAYjF,GAAK/I,EAAO,GAAG,GAC3BgO,EAAYhF,GAAKhJ,EAAO,GAAG,GAC3BgO,EAAYC,QAAU,EACtB,IAAIlM,EAAM/B,EAAO,GAEb+B,GACFiM,EAAYE,KAAOnM,EAAI,GACvBiM,EAAYG,KAAOpM,EAAI,KAEvBiM,EAAYE,KAAOE,IACnBJ,EAAYG,KAAOC,IAEvB,CAEA,SAASC,IACP,IAAIC,EAAYnQ,KACZoQ,EAAaD,EAAUE,YAAY,cACnCC,EAAWH,EAAUE,YAAY,YACjCE,EAAQJ,EAAUE,YAAY,SAElC,GAAKD,GAAeE,IAAYC,EAAMjO,OAAtC,CAIA,IAAIkO,EAAW,EACXC,EAAazQ,KAAK0Q,OAEtB,MAAOD,EACDA,EAAW7L,QACb4L,GAAYC,EAAW7L,MAAM,IAG/B6L,EAAaA,EAAWC,OAG1B,IAAIhB,EAAOS,EAAUE,YAAY,QAGjC,GAAKrQ,KAAK2Q,SAAYjB,EAAKiB,QAA3B,CAIA,IAAIb,EAAUJ,EAAK3F,MAAM+F,QACrBc,EAAUlB,EAAKmB,QAAQ,GACvBC,EAAQpB,EAAKmB,QAAQf,GACrBiB,EAAI9B,EAAO+B,IAAI,GAAIF,EAAOF,GAG9B,GAFA3B,EAAOgC,UAAUF,EAAGA,GAEhBX,EAAY,CACdA,EAAW5O,KAAK,WAAYoP,GAC5B,IAAIM,EAAUxB,EAAKyB,UAAU,GAC7Bf,EAAW5O,KAAK,WAAY8C,KAAKE,GAAK,EAAIF,KAAKC,MAAM2M,EAAQ,GAAIA,EAAQ,KACzEd,EAAW5O,KAAK,QAAS,CAACgP,EAAWV,EAASU,EAAWV,GAC3D,CAEA,GAAIQ,EAAU,CACZA,EAAS9O,KAAK,WAAYsP,GACtBI,EAAUxB,EAAKyB,UAAU,GAC7Bb,EAAS9O,KAAK,YAAa8C,KAAKE,GAAK,EAAIF,KAAKC,MAAM2M,EAAQ,GAAIA,EAAQ,KACxEZ,EAAS9O,KAAK,QAAS,CAACgP,EAAWV,EAASU,EAAWV,GACzD,CAEA,IAAKS,EAAMjO,OAAQ,CAEjB,IAAI8O,EACAC,EACAC,EACAC,EAJJhB,EAAM/O,KAAK,WAAYsP,GAKvB,IAAIU,EAAWjB,EAAMkB,gBACjBC,EAAYF,EAAS,GAAKhB,EAC1BmB,EAAYH,EAAS,GAAKhB,EAC1BoB,EAAc9B,EAAU,EAExB+B,GADAX,EAAUxB,EAAKyB,UAAUS,GACrB,CAACV,EAAQ,IAAKA,EAAQ,KAC1BY,EAAKpC,EAAKmB,QAAQe,GAElBC,EAAE,GAAK,IACTA,EAAE,IAAMA,EAAE,GACVA,EAAE,IAAMA,EAAE,IAGZ,IAYIE,EAZAC,EAAMd,EAAQ,GAAK,GAAK,EAAI,EAEhC,GAAyB,UAArBX,EAAM0B,YAA+C,QAArB1B,EAAM0B,WAAsB,CAC9D,IAAI5N,GAAYC,KAAKC,MAAM2M,EAAQ,GAAIA,EAAQ,IAE3CJ,EAAM,GAAKF,EAAQ,KACrBvM,EAAWC,KAAKE,GAAKH,GAGvBkM,EAAM/O,KAAK,WAAY6C,EACzB,CAIA,OAAQkM,EAAM0B,YACZ,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,SACHF,GAAMJ,EACNL,EAAoB,SACpB,MAEF,IAAK,oBACL,IAAK,qBACL,IAAK,kBACHS,EAAKJ,EACLL,EAAoB,MACpB,MAEF,QACES,EAAK,EACLT,EAAoB,SAGxB,OAAQf,EAAM0B,YACZ,IAAK,MACHb,EAAe,CAACL,EAAE,GAAKW,EAAYZ,EAAM,GAAIC,EAAE,GAAKY,EAAYb,EAAM,IACtEO,EAAYN,EAAE,GAAK,GAAM,OAASA,EAAE,IAAM,GAAM,QAAU,SAC1DO,EAAoBP,EAAE,GAAK,GAAM,MAAQA,EAAE,IAAM,GAAM,SAAW,SAClE,MAEF,IAAK,QACHK,EAAe,EAAEL,EAAE,GAAKW,EAAYd,EAAQ,IAAKG,EAAE,GAAKY,EAAYf,EAAQ,IAC5ES,EAAYN,EAAE,GAAK,GAAM,QAAUA,EAAE,IAAM,GAAM,OAAS,SAC1DO,EAAoBP,EAAE,GAAK,GAAM,SAAWA,EAAE,IAAM,GAAM,MAAQ,SAClE,MAEF,IAAK,iBACL,IAAK,cACL,IAAK,oBACHK,EAAe,CAACM,EAAYM,EAAMpB,EAAQ,GAAIA,EAAQ,GAAKmB,GAC3DV,EAAYH,EAAQ,GAAK,EAAI,QAAU,OACvCK,EAAa,EAAEG,EAAYM,GAAMD,GACjC,MAEF,IAAK,kBACL,IAAK,eACL,IAAK,qBACL,IAAK,SACHX,EAAe,CAACU,EAAG,GAAIA,EAAG,GAAKC,GAC/BV,EAAY,SACZE,EAAa,CAAC,GAAIQ,GAClB,MAEF,IAAK,eACL,IAAK,YACL,IAAK,kBACHX,EAAe,EAAEM,EAAYM,EAAMlB,EAAM,GAAIA,EAAM,GAAKiB,GACxDV,EAAYH,EAAQ,IAAM,EAAI,QAAU,OACxCK,EAAa,CAACG,EAAYM,GAAMD,GAChC,MAGJxB,EAAM/O,KAAK,CACT2F,MAAO,CAELmK,kBAAmBf,EAAM2B,iBAAmBZ,EAC5CD,UAAWd,EAAM4B,aAAed,GAElCtN,SAAUqN,EACVxM,MAAO,CAAC4L,EAAUA,GAClB4B,OAAQb,GAEZ,CA7HA,CAlBA,CAgJF,CAQA,SAASnS,EAAKO,EAAUC,EAAKC,GAC3BV,EAAQW,MAAMC,KAAKC,MAEnBA,KAAKqS,YAAY1S,EAAUC,EAAKC,EAClC,CAEA,IAAIyS,EAAYlT,EAAKiB,UAErBiS,EAAU7K,aAAeyI,EAEzBoC,EAAUD,YAAc,SAAU1S,EAAUC,EAAKC,GAC/C,IAAIgJ,EAAclJ,EAASmJ,UACvByJ,EAAa5S,EAASmC,cAAclC,GACpC8P,EAAOxP,EAAWqS,GACtB7C,EAAK3F,MAAM+F,QAAU,EACrB3Q,EAAQqT,UAAU9C,EAAM,CACtB3F,MAAO,CACL+F,QAAS,IAEVjH,EAAajJ,GAChBI,KAAKC,IAAIyP,GACT,IAAIa,EAAQ,IAAIpR,EAAQsT,KAAK,CAC3BjD,KAAM,QAINkD,yBAA0B,IAE5B1S,KAAKC,IAAIsQ,GACTlR,EAAOsT,KAAKtD,GAAmB,SAAUE,GACvC,IAAIvO,EAASzB,EAAagQ,EAAgB5P,EAAUC,GAIpDI,KAAKC,IAAIe,GACThB,KAAKsP,EAAkBC,IAAmB5P,EAASoB,cAAcnB,EAAK2P,EACxE,GAAGvP,MAEHA,KAAK4S,iBAAiBjT,EAAUC,EAAKC,EACvC,EAEAyS,EAAU7O,WAAa,SAAU9D,EAAUC,EAAKC,GAC9C,IAAIgJ,EAAclJ,EAASmJ,UACvB4G,EAAO1P,KAAKqQ,YAAY,QACxBkC,EAAa5S,EAASmC,cAAclC,GACpCiT,EAAS,CACX9I,MAAO,CAAC,GAEV6F,EAAciD,EAAO9I,MAAOwI,GAC5BpT,EAAQ2T,YAAYpD,EAAMmD,EAAQhK,EAAajJ,GAC/CP,EAAOsT,KAAKtD,GAAmB,SAAUE,GACvC,IAAI3O,EAAajB,EAASoB,cAAcnB,EAAK2P,GACzCwD,EAAMzD,EAAkBC,GAE5B,GAAIvP,KAAK+S,KAASnS,EAAY,CAC5BZ,KAAKmB,OAAOnB,KAAKqQ,YAAYd,IAC7B,IAAIvO,EAASzB,EAAagQ,EAAgB5P,EAAUC,GACpDI,KAAKC,IAAIe,EACX,CAEAhB,KAAK+S,GAAOnS,CACd,GAAGZ,MAEHA,KAAK4S,iBAAiBjT,EAAUC,EAAKC,EACvC,EAEAyS,EAAUM,iBAAmB,SAAUjT,EAAUC,EAAKC,GACpD,IAAIgJ,EAAclJ,EAASmJ,UACvB4G,EAAO1P,KAAKqQ,YAAY,QACxB2C,EAAYnT,GAAeA,EAAYmT,UACvCC,EAAiBpT,GAAeA,EAAYoT,eAC5CC,EAAarT,GAAeA,EAAYqT,WACxCC,EAAkBtT,GAAeA,EAAYsT,gBAEjD,IAAKtT,GAAeF,EAASyT,cAAe,CAC1C,IAAI9S,EAAYX,EAASY,aAAaX,GACtCoT,EAAY1S,EAAUG,SAAS,aAAa8L,eAC5C0G,EAAiB3S,EAAUG,SAAS,sBAAsB8L,eAC1D2G,EAAa5S,EAAUG,SAAS,SAChC0S,EAAkB7S,EAAUG,SAAS,iBACvC,CAEA,IAAI+L,EAAc7M,EAASoB,cAAcnB,EAAK,SAC1CyT,EAAgBhU,EAAOiU,UAAU3T,EAASoB,cAAcnB,EAAK,WAAYoT,EAAU5K,QAAS,GAChGsH,EAAKpD,SAASjN,EAAOkU,SAAS,CAC5BxL,eAAe,EACfT,KAAM,OACNF,OAAQoF,EACRpE,QAASiL,GACRL,IACHtD,EAAK8D,WAAaP,EAElB5T,EAAOsT,KAAKtD,GAAmB,SAAUE,GACvC,IAAIvO,EAAShB,KAAKqQ,YAAYd,GAE1BvO,IACFA,EAAOS,SAAS+K,GAChBxL,EAAOM,SAAS,CACd8G,QAASiL,IAGf,GAAGrT,MACH,IAGIyT,EACAC,EAJAC,EAAYT,EAAWjK,WAAW,QAClC2K,EAAiBT,EAAgBlK,WAAW,QAC5CsH,EAAQvQ,KAAKqQ,YAAY,SAI7B,IAAIsD,GAAaC,KACfH,EAAoBjH,GAAe,OACnCkH,EAAW7K,EAAYgL,kBAAkBjU,EAAK,SAAUD,EAASmU,UAEjD,MAAZJ,GAAkB,CACpB,IAAIK,EAASlL,EAAYmL,YAAYpU,GACrC8T,EAAqB,MAAVK,EAAiBpU,EAASsU,QAAQrU,GAAOsU,SAASH,GAAU3E,EAAM2E,GAAUA,CACzF,CAGF,IAAII,EAAaR,EAAYD,EAAW,KACpCU,EAAeR,EAAiBvU,EAAOgV,UAAUxL,EAAYgL,kBAAkBjU,EAAK,WAAYD,EAASmU,UAAWJ,GAAY,KAChIY,EAAa/D,EAAMpJ,MAGvB,GAAkB,MAAdgN,GAAsC,MAAhBC,EAAsB,CAC9CjV,EAAQoV,aAAahE,EAAMpJ,MAAO+L,EAAY,CAC5CsB,KAAML,GACL,CACDM,UAAWhB,IAEblD,EAAM4B,YAAcmC,EAAWjD,UAC/Bd,EAAM2B,gBAAkBoC,EAAWhD,kBAEnCf,EAAM0B,WAAaiB,EAAWvS,IAAI,aAAe,SACjD,IAAI6Q,EAAW0B,EAAWvS,IAAI,YAEzBtB,EAAOwB,QAAQ2Q,KAClBA,EAAW,CAACA,EAAUA,IAGxBjB,EAAMkB,gBAAkBD,CAC1B,CAIEjB,EAAMiD,WAFY,MAAhBY,EAEiB,CACjBI,KAAMJ,EACNM,SAAUvB,EAAgBwB,cAAa,GAGvCC,UAAWzB,EAAgBlK,WAAW,aACtC4L,WAAY1B,EAAgBlK,WAAW,cACvC6L,SAAU3B,EAAgBlK,WAAW,YACrC8L,WAAY5B,EAAgBlK,WAAW,eAGtB,CACjBuL,KAAM,MAIVjE,EAAMjO,QAAUqR,IAAcC,EAC9BzU,EAAQ6V,cAAchV,KACxB,EAEAsS,EAAU5J,UAAY,WACpB1I,KAAK2I,QAAQ,WACf,EAEA2J,EAAU1J,SAAW,WACnB5I,KAAK2I,QAAQ,SACf,EAEA2J,EAAUzN,aAAe,SAAUlF,EAAUC,GAC3CI,KAAK4P,cAAcjQ,EAASmC,cAAclC,GAC5C,EAEA0S,EAAU1C,cAAgB,SAAU/N,GAClC,IAAIoT,EAAWjV,KAAKqQ,YAAY,QAChCT,EAAcqF,EAASlL,MAAOlI,GAC9BoT,EAASC,OACX,EAEA7V,EAAOyF,SAAS1F,EAAMD,EAAQW,OAC9B,IAAIiF,EAAW3F,EACf4F,EAAOC,QAAUF,C,wBClbjB,IAAI5F,EAAU,EAAQ,OAElBgW,EAAY,EAAQ,OA8BxB,SAASC,EAASC,GAChBrV,KAAKsV,MAAQD,GAAQF,EACrBnV,KAAKqL,MAAQ,IAAIlM,EAAQW,KAC3B,CAEA,IAAIyV,EAAgBH,EAAS/U,UA+B7B,SAASmV,EAAMC,EAAU9V,EAAUC,EAAKC,GACtC,IAAI6V,EAAa/V,EAASmC,cAAclC,GAExC,GAAK+V,EAAcD,GAAnB,CAIA,IAAIE,EAAK,IAAIH,EAASH,MAAM3V,EAAUC,EAAKC,GAC3CF,EAASkW,iBAAiBjW,EAAKgW,GAC/BH,EAASpK,MAAMpL,IAAI2V,EAJnB,CAKF,CAEA,SAASE,EAASL,EAAUM,EAAaC,EAAaC,EAAQC,EAAQrW,GACpE,IAAIsW,EAASJ,EAAYK,iBAAiBH,GAErCN,EAAcK,EAAYlU,cAAcoU,KAKxCC,EAGHA,EAAO1S,WAAWuS,EAAaE,EAAQrW,GAFvCsW,EAAS,IAAIV,EAASH,MAAMU,EAAaE,EAAQrW,GAKnDmW,EAAYH,iBAAiBK,EAAQC,GACrCV,EAASpK,MAAMpL,IAAIkW,IAXjBV,EAASpK,MAAMlK,OAAOgV,EAY1B,CAoBA,SAASE,EAAeT,GACtB,OAAOA,EAAGU,WAAaV,EAAGU,UAAU3Q,OAAS,CAC/C,CAqBA,SAAS4Q,EAAgB5W,GACvB,IAAImJ,EAAYnJ,EAASmJ,UACzB,MAAO,CACLkK,UAAWlK,EAAUrI,SAAS,aAAa8L,eAC3C0G,eAAgBnK,EAAUrI,SAAS,sBAAsB8L,eACzD2G,WAAYpK,EAAUrI,SAAS,SAC/B0S,gBAAiBrK,EAAUrI,SAAS,kBAExC,CAiBA,SAAS+V,EAAWC,GAClB,OAAOjJ,MAAMiJ,EAAG,KAAOjJ,MAAMiJ,EAAG,GAClC,CAEA,SAASd,EAAce,GACrB,OAAQF,EAAWE,EAAI,MAAQF,EAAWE,EAAI,GAChD,CAnIAnB,EAAchK,aAAe,WAC3B,OAAO,CACT,EAMAgK,EAAc9R,WAAa,SAAU9D,GACnC,IAAI8V,EAAWzV,KACXqL,EAAQoK,EAASpK,MACjB0K,EAAcN,EAASkB,UAC3BlB,EAASkB,UAAYhX,EAGhBoW,GACH1K,EAAMxD,YAGR,IAAIhI,EAAc0W,EAAgB5W,GAClCA,EAASiX,KAAKb,GAAa9V,KAAI,SAAUL,GACvC4V,EAAMC,EAAU9V,EAAUC,EAAKC,EACjC,IAAGgX,QAAO,SAAUX,EAAQD,GAC1BH,EAASL,EAAUM,EAAapW,EAAUsW,EAAQC,EAAQrW,EAC5D,IAAGsB,QAAO,SAAUvB,GAClByL,EAAMlK,OAAO4U,EAAYK,iBAAiBxW,GAC5C,IAAGkX,SACL,EAgCAvB,EAAc1Q,aAAe,WAC3B,IAAIlF,EAAWK,KAAK2W,UAEfhX,GAILA,EAASoX,mBAAkB,SAAUnB,EAAIhW,GACvCgW,EAAG/Q,aAAalF,EAAUC,EAC5B,GAAGI,KACL,EAEAuV,EAAcxJ,yBAA2B,SAAUpM,GACjDK,KAAKgX,aAAeT,EAAgB5W,GACpCK,KAAK2W,UAAY,KACjB3W,KAAKqL,MAAMxD,WACb,EAMA0N,EAActJ,kBAAoB,SAAUC,EAAYvM,GACtD,SAASsX,EAA0BrB,GAC5BA,EAAGsB,SAAYb,EAAeT,KACjCA,EAAG9I,YAAc8I,EAAGuB,eAAgB,EAExC,CAEA,IAAK,IAAIvX,EAAMsM,EAAW9I,MAAOxD,EAAMsM,EAAW2C,IAAKjP,IAAO,CAC5D,IAAI8V,EAAa/V,EAASmC,cAAclC,GAExC,GAAI+V,EAAcD,GAAa,CAC7B,IAAIE,EAAK,IAAI5V,KAAKsV,MAAM3V,EAAUC,EAAKI,KAAKgX,cAC5CpB,EAAG7M,SAASkO,GACZjX,KAAKqL,MAAMpL,IAAI2V,GACfjW,EAASkW,iBAAiBjW,EAAKgW,EACjC,CACF,CACF,EAYAL,EAAcpU,OAAS,WACrBnB,KAAKgM,oBAELhM,KAAKwL,aAAe,KACpBxL,KAAKqL,MAAMxD,WACb,EAEA0N,EAAcvJ,kBAAoB,WAChC,IAAIc,EAAc9M,KAAKwL,aAEnBsB,GACFA,EAAYC,kBAEhB,EAUA,IAAIhI,EAAWqQ,EACfpQ,EAAOC,QAAUF,C,wBC7KjB,IAAI5F,EAAU,EAAQ,OAElBK,EAAO,EAAQ,OAwBf4X,EAAoBjY,EAAQC,KAAKiB,UACjCgX,EAAmBlY,EAAQmY,YAAYjX,UAE3C,SAASkX,EAAOxN,GACd,OAAOyD,OAAOzD,EAAMgG,OAASvC,OAAOzD,EAAMiG,KAC5C,CAEA,IAAIjL,EAAW5F,EAAQ2K,YAAY,CACjC0N,KAAM,UACNrQ,MAAO,CACLC,OAAQ,OACRE,KAAM,MAERyC,MAAO,CACLW,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJiF,QAAS,EACTC,KAAM,KACNC,KAAM,MAER7F,UAAW,SAAUkD,EAAKtD,GACxB/J,KAAKuX,EAAOxN,GAAS,iBAAmB,mBAAmBsD,EAAKtD,EAClE,EACA0N,eAAgBL,EAAkBjN,UAClCuN,gBAAiBL,EAAiBlN,UAClC0G,QAAS,SAAUhN,GACjB,OAAO7D,KAAKuX,EAAOvX,KAAK+J,OAAS,eAAiB,iBAAiBlG,EACrE,EACA8T,aAAcP,EAAkBvG,QAChC+G,cAAeP,EAAiBxG,QAChCM,UAAW,SAAUtN,GACnB,IAAIkG,EAAQ/J,KAAK+J,MACb8N,EAAIN,EAAOxN,GAAS,CAACA,EAAMa,GAAKb,EAAMW,GAAIX,EAAMc,GAAKd,EAAMY,IAAM3K,KAAK8X,gBAAgBjU,GAC1F,OAAOrE,EAAKyR,UAAU4G,EAAGA,EAC3B,EACAC,gBAAiBT,EAAiBlG,YAGpCnM,EAAOC,QAAUF,C,wBClEjB,IAAI5F,EAAU,EAAQ,OAElBE,EAAS,EAAQ,OA8BrB,SAAS6F,EAASvF,EAAUC,EAAKC,GAC/BV,EAAQW,MAAMC,KAAKC,MAEnBA,KAAK+X,gBAAgBpY,EAAUC,EAAKC,EACtC,CAEA,IAAImY,EAAgB9S,EAAS7E,UAE7B2X,EAAcD,gBAAkB,SAAUpY,EAAUC,EAAKC,GAEvD,IAAIgC,EAASlC,EAASmC,cAAclC,GAChC8P,EAAO,IAAIvQ,EAAQ+F,SAAS,CAC9B6E,MAAO,CACLlI,OAAQA,KAGZ7B,KAAKC,IAAIyP,GAET1P,KAAK4S,iBAAiBjT,EAAUC,EAAKC,EACvC,EAEAmY,EAAcvU,WAAa,SAAU9D,EAAUC,EAAKC,GAClD,IAAIgJ,EAAclJ,EAASmJ,UACvB4G,EAAO1P,KAAKiB,QAAQ,GACpB4R,EAAS,CACX9I,MAAO,CACLlI,OAAQlC,EAASmC,cAAclC,KAGnCT,EAAQ2T,YAAYpD,EAAMmD,EAAQhK,EAAajJ,GAE/CI,KAAK4S,iBAAiBjT,EAAUC,EAAKC,EACvC,EAEAmY,EAAcpF,iBAAmB,SAAUjT,EAAUC,EAAKC,GACxD,IAAI6P,EAAO1P,KAAKiB,QAAQ,GACpBX,EAAYX,EAASY,aAAaX,GAClC4M,EAAc7M,EAASoB,cAAcnB,EAAK,SAC1CoT,EAAYnT,GAAeA,EAAYmT,UACvCC,EAAiBpT,GAAeA,EAAYoT,eAE3CpT,IAAeF,EAASyT,gBAC3BJ,EAAY1S,EAAUG,SAAS,aAAa8L,eAC5C0G,EAAiB3S,EAAUG,SAAS,sBAAsB8L,gBAG5DmD,EAAKpD,SAASjN,EAAOkU,SAAS,CAC5BxL,eAAe,EACfT,KAAM,OACNF,OAAQoF,GACPwG,IACHtD,EAAK8D,WAAaP,EAClB9T,EAAQ6V,cAAchV,KACxB,EAEAgY,EAAcnT,aAAe,SAAUlF,EAAUC,GAC/C,IAAIoK,EAAWhK,KAAKiB,QAAQ,GAC5B+I,EAAS4B,SAAS,SAAUjM,EAASmC,cAAclC,GACrD,EAEAP,EAAOyF,SAASI,EAAU/F,EAAQW,OAClC,IAAIiF,EAAWG,EACfF,EAAOC,QAAUF,C,wBC9FjB,IAAI1F,EAAS,EAAQ,OAEjBC,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvBJ,EAAU,EAAQ,OAElBkH,EAAU,EAAQ,OAElBC,EAAeD,EAAQC,aAEvB2R,EAAe,EAAQ,OAEvBC,EAAkBD,EAAaC,gBAgCnC,SAAS3R,EAAUiB,EAAM5H,EAAKC,GAC5BV,EAAQW,MAAMC,KAAKC,MACnBA,KAAKyD,WAAW+D,EAAM5H,EAAKC,EAC7B,CAEA,IAAIsY,EAAc5R,EAAUlG,UASxB+X,EAAgB7R,EAAU6R,cAAgB,SAAU5Q,EAAM5H,GAC5D,IAAI8G,EAAac,EAAKzG,cAAcnB,EAAK,cACzC,OAAO8G,aAAsBoI,MAAQpI,EAAW2R,QAAU,EAAE3R,GAAaA,EAC3E,EAEA,SAASgB,EAAShB,GAChB,MAAO,CAACA,EAAW,GAAK,EAAGA,EAAW,GAAK,EAC7C,CAEA,SAAS4R,EAAYC,EAAIxG,GACvB/R,KAAK0Q,OAAO8H,MAAMD,EAAIxG,EACxB,CAEAoG,EAAYM,cAAgB,SAAU7X,EAAY4G,EAAM5H,EAAK8G,EAAYgS,GAEvE1Y,KAAK6H,YACL,IAAI/G,EAAQ0G,EAAKzG,cAAcnB,EAAK,SAOhC6P,EAAalQ,EAAaqB,GAAa,GAAI,EAAG,EAAG,EAAGE,EAAO4X,GAC/DjJ,EAAWjO,KAAK,CACdJ,GAAI,IACJC,SAAS,EACTuD,MAAO8C,EAAShB,KAGlB+I,EAAW+I,MAAQF,EACnBtY,KAAKkB,YAAcN,EACnBZ,KAAKC,IAAIwP,EACX,EAOA0I,EAAYQ,oBAAsB,SAAUC,GAC1C5Y,KAAKiB,QAAQ,GAAG0B,cAAciW,EAChC,EAYAT,EAAYU,cAAgB,WAC1B,OAAO7Y,KAAKiB,QAAQ,EACtB,EAOAkX,EAAYzQ,SAAW,WACrB,OAAO1H,KAAKiB,QAAQ,GAAG2D,KACzB,EAMAuT,EAAYzP,UAAY,WACtB1I,KAAKiB,QAAQ,GAAG0H,QAAQ,WAC1B,EAMAwP,EAAYvP,SAAW,WACrB5I,KAAKiB,QAAQ,GAAG0H,QAAQ,SAC1B,EAOAwP,EAAYW,KAAO,SAAU5R,EAAQD,GACnC,IAAIwI,EAAazP,KAAKiB,QAAQ,GAC9BwO,EAAWvI,OAASA,EACpBuI,EAAWxI,EAAIA,CACjB,EAEAkR,EAAYY,aAAe,SAAUC,GACnC,IAAIvJ,EAAazP,KAAKiB,QAAQ,GAC9BwO,EAAWuJ,UAAYA,EACvBvJ,EAAW9D,OAASqN,EAAY,OAASvJ,EAAW9D,MACtD,EAoBAwM,EAAY1U,WAAa,SAAU+D,EAAM5H,EAAKC,GAC5CG,KAAKgI,QAAS,EACd,IAAIpH,EAAa4G,EAAKzG,cAAcnB,EAAK,WAAa,SAClDiJ,EAAcrB,EAAKsB,UACnBpC,EAAa0R,EAAc5Q,EAAM5H,GACjCqZ,EAASrY,IAAeZ,KAAKkB,YAEjC,GAAI+X,EAAQ,CACV,IAAIP,EAAalR,EAAKzG,cAAcnB,EAAK,oBAEzCI,KAAKyY,cAAc7X,EAAY4G,EAAM5H,EAAK8G,EAAYgS,EACxD,KAAO,CACL,IAAIjJ,EAAazP,KAAKiB,QAAQ,GAC9BwO,EAAWzH,QAAS,EACpB7I,EAAQ2T,YAAYrD,EAAY,CAC9B7K,MAAO8C,EAAShB,IACfmC,EAAajJ,EAClB,CAIA,GAFAI,KAAKkZ,cAAc1R,EAAM5H,EAAK8G,EAAY7G,GAEtCoZ,EAAQ,CACNxJ,EAAazP,KAAKiB,QAAQ,GAA9B,IACIkY,EAAStZ,GAAeA,EAAYsZ,OACpCtG,EAAS,CACXjO,MAAO6K,EAAW7K,MAAMyT,SAE1Bc,IAAWtG,EAAO1L,MAAQ,CACxBiB,QAASqH,EAAWtI,MAAMiB,UAE5BqH,EAAW7K,MAAQ,CAAC,EAAG,GACvBuU,IAAW1J,EAAWtI,MAAMiB,QAAU,GACtCjJ,EAAQqT,UAAU/C,EAAYoD,EAAQhK,EAAajJ,EACrD,CAEAI,KAAKoZ,aAAevQ,CACtB,EAGA,IAAIwQ,EAAwB,CAAC,aACzBC,EAA0B,CAAC,WAAY,aACvCC,EAAwB,CAAC,SACzBC,EAA0B,CAAC,WAAY,SAoG3C,SAASC,EAAiBC,EAAWC,GAGnC,IAAI3Z,KAAK8M,cAAe9M,KAAKmX,cAI7B,GAAgB,aAAZwC,EAAwB,CAC1B,IAAI/U,EAAQ5E,KAAK4Z,sBACbC,EAAQjV,EAAM,GAAKA,EAAM,GACzBkV,EAAc,CAChBlV,MAAO,CAACN,KAAK2J,IAAe,IAAXrJ,EAAM,GAAUA,EAAM,GAAK,GAAIN,KAAK2J,IAAe,IAAXrJ,EAAM,GAAUA,EAAM,GAAK,EAAIiV,KAM1F7Z,KAAK+Z,UAAUD,EAAa,IAAK,aACnC,KAAuB,WAAZH,GACT3Z,KAAK+Z,UAAU,CACbnV,MAAO5E,KAAK4Z,uBACX,IAAK,aAEZ,CAnHAzB,EAAYe,cAAgB,SAAU1R,EAAM5H,EAAK8G,EAAY7G,GAC3D,IAAI4P,EAAazP,KAAKiB,QAAQ,GAC1B4H,EAAcrB,EAAKsB,UACnBhI,EAAQ0G,EAAKzG,cAAcnB,EAAK,SAEZ,UAApB6P,EAAW+H,KACb/H,EAAWnD,SAAS,CAClBvE,eAAe,IAGjB0H,EAAWnO,SAAS,CAClB8G,QAAS,KACT4R,WAAY,KACZC,cAAe,KACfC,cAAe,KACfC,YAAa,OAIjB,IAAIC,EAAYva,GAAeA,EAAYua,UACvCC,EAAiBxa,GAAeA,EAAYwa,eAC5CrR,EAAenJ,GAAeA,EAAYmJ,aAC1CkK,EAAarT,GAAeA,EAAYqT,WACxCC,EAAkBtT,GAAeA,EAAYsT,gBAC7CmH,EAAiBza,GAAeA,EAAYya,eAC5CC,EAAc1a,GAAeA,EAAY0a,YAE7C,IAAK1a,GAAe2H,EAAK4L,cAAe,CACtC,IAAI9S,EAAYT,GAAeA,EAAYS,UAAYT,EAAYS,UAAYkH,EAAKjH,aAAaX,GAGjGwa,EAAY9Z,EAAUG,SAAS4Y,GAAuB9X,aAAa,CAAC,UACpE8Y,EAAiB/Z,EAAUG,SAAS6Y,GAAyB/X,eAC7DyH,EAAe1I,EAAU2I,WAAW,gBACpCiK,EAAa5S,EAAUG,SAAS8Y,GAChCpG,EAAkB7S,EAAUG,SAAS+Y,GACrCc,EAAiBha,EAAU2I,WAAW,kBACtCsR,EAAcja,EAAU2I,WAAW,SACrC,MACEoR,EAAiBhb,EAAOmb,OAAO,CAAC,EAAGH,GAGrC,IAAII,EAAUhL,EAAWtI,MACrB+B,EAAe1B,EAAKzG,cAAcnB,EAAK,gBAC3C6P,EAAWjO,KAAK,YAAa0H,GAAgB,GAAK5E,KAAKE,GAAK,KAAO,GAE/DwE,GACFyG,EAAWjO,KAAK,WAAY,CAAC8E,EAAa0C,EAAa,GAAItC,EAAW,IAAKJ,EAAa0C,EAAa,GAAItC,EAAW,MAGtH6T,GAAe9K,EAAWjO,KAAK,SAAU+Y,GAEzC9K,EAAWhO,SAASX,EAAOjB,GAAeA,EAAY6a,kBACtDjL,EAAWnO,SAAS8Y,GACpB,IAAIhS,EAAUZ,EAAKzG,cAAcnB,EAAK,WAEvB,MAAXwI,IACFqS,EAAQrS,QAAUA,GAGpB,IAAIuS,EAAQnT,EAAKzG,cAAcnB,EAAK,SAChCgb,EAAWnL,EAAWoL,WAEb,MAATF,EACc,MAAZC,IACFnL,EAAWoL,WAAapL,EAAWrO,GACnCqO,EAAWrO,IAAMuZ,GAEE,MAAZC,IACTnL,EAAWrO,GAAKwZ,EAChBnL,EAAWoL,WAAa,MAG1B,IAAIC,EAAejb,GAAeA,EAAYib,aAS9C,SAASC,EAAoBnb,EAAKyO,GAChC,OAAOyM,EAAetT,EAAKyM,QAAQrU,GAAOsY,EAAgB1Q,EAAM5H,EAClE,CAVAT,EAAQ6b,cAAcP,EAASJ,EAAgBnH,EAAYC,EAAiB,CAC1E8H,aAAcpS,EACdqS,eAAgBtb,EAChBub,YAAaJ,EACbK,YAAY,EACZ3G,UAAW3T,IAOb2O,EAAWmK,sBAAwBlS,EAAShB,GAC5C+I,EAAW+D,WAAa6G,EACxB5K,EAAWgK,iBAAmBa,GAAkBzR,EAAYwS,qBAAuB5B,EAAmB,KACtGta,EAAQ6V,cAAcvF,EACxB,EAiCA0I,EAAY3O,QAAU,SAAUC,EAAI4E,GAClC,IAAIoB,EAAazP,KAAKiB,QAAQ,GAE9BjB,KAAKgI,OAASyH,EAAWzH,QAAS,IAEhCqG,IAAOA,EAAIiN,aAAe7L,EAAWtI,MAAMqN,KAAO,MACpDrV,EAAQ2T,YAAYrD,EAAY,CAC9BtI,MAAO,CACLiB,QAAS,GAEXxD,MAAO,CAAC,EAAG,IACV5E,KAAKoZ,aAAcpZ,KAAKkL,UAAWzB,EACxC,EAEApK,EAAOyF,SAASyB,EAAWpH,EAAQW,OACnC,IAAIiF,EAAWwB,EACfvB,EAAOC,QAAUF,C,wBC/WjB,IAAI5F,EAAU,EAAQ,OAElBoH,EAAY,EAAQ,OAEpBgV,EAAQ,EAAQ,OAEhBC,EAAWD,EAAMC,SA8BrB,SAASC,EAAWC,GAClB1b,KAAKqL,MAAQ,IAAIlM,EAAQW,MACzBE,KAAK2b,YAAcD,GAAcnV,CACnC,CAEA,IAAIqV,EAAkBH,EAAWpb,UAEjC,SAASwb,EAAgBrU,EAAMsU,EAAOlc,EAAKyO,GACzC,OAAOyN,IAAUtO,MAAMsO,EAAM,MAAQtO,MAAMsO,EAAM,OAASzN,EAAI0N,UAAY1N,EAAI0N,SAASnc,OAGlFyO,EAAIU,YAAcV,EAAIU,UAAUtB,QAAQqO,EAAM,GAAIA,EAAM,MAA8C,SAAtCtU,EAAKzG,cAAcnB,EAAK,SAC/F,CAmHA,SAASoc,EAAmB3N,GAO1B,OANW,MAAPA,GAAgBmN,EAASnN,KAC3BA,EAAM,CACJ0N,SAAU1N,IAIPA,GAAO,CAAC,CACjB,CAiBA,SAASkI,EAAgB/O,GACvB,IAAIqB,EAAcrB,EAAKsB,UACvB,MAAO,CACLsR,UAAWvR,EAAYpI,SAAS,aAAac,aAAa,CAAC,UAC3D8Y,eAAgBxR,EAAYpI,SAAS,sBAAsBc,eAC3D2H,aAAcL,EAAYlI,IAAI,gBAC9BqI,aAAcH,EAAYlI,IAAI,gBAC9B2Z,eAAgBzR,EAAYlI,IAAI,kBAChCuS,WAAYrK,EAAYpI,SAAS,SACjC0S,gBAAiBtK,EAAYpI,SAAS,kBACtC8Z,YAAa1R,EAAYlI,IAAI,UAEjC,CA9IAib,EAAgBnY,WAAa,SAAU+D,EAAM6G,GAC3CA,EAAM2N,EAAmB3N,GACzB,IAAIhD,EAAQrL,KAAKqL,MACbxC,EAAcrB,EAAKsB,UACnBmT,EAAUjc,KAAKkc,MACfC,EAAanc,KAAK2b,YAClB9b,EAAc0W,EAAgB/O,GAG7ByU,GACH5Q,EAAMxD,YAGRL,EAAKoP,KAAKqF,GAAShc,KAAI,SAAUiW,GAC/B,IAAI4F,EAAQtU,EAAK1F,cAAcoU,GAE/B,GAAI2F,EAAgBrU,EAAMsU,EAAO5F,EAAQ7H,GAAM,CAC7C,IAAIC,EAAW,IAAI6N,EAAW3U,EAAM0O,EAAQrW,GAC5CyO,EAAS9M,KAAK,WAAYsa,GAC1BtU,EAAKqO,iBAAiBK,EAAQ5H,GAC9BjD,EAAMpL,IAAIqO,EACZ,CACF,IAAGuI,QAAO,SAAUX,EAAQD,GAC1B,IAAI3H,EAAW2N,EAAQ7F,iBAAiBH,GACpC6F,EAAQtU,EAAK1F,cAAcoU,GAE1B2F,EAAgBrU,EAAMsU,EAAO5F,EAAQ7H,IAKrCC,GAIHA,EAAS7K,WAAW+D,EAAM0O,EAAQrW,GAClCV,EAAQ2T,YAAYxE,EAAU,CAC5BvK,SAAU+X,GACTjT,KANHyF,EAAW,IAAI6N,EAAW3U,EAAM0O,GAChC5H,EAAS9M,KAAK,WAAYsa,IAS5BzQ,EAAMpL,IAAIqO,GACV9G,EAAKqO,iBAAiBK,EAAQ5H,IAhB5BjD,EAAMlK,OAAOmN,EAiBjB,IAAGnN,QAAO,SAAU8U,GAClB,IAAIL,EAAKqG,EAAQ7F,iBAAiBH,GAClCL,GAAMA,EAAGpM,SAAQ,WACf6B,EAAMlK,OAAOyU,EACf,GACF,IAAGkB,UACH9W,KAAKkc,MAAQ1U,CACf,EAEAoU,EAAgBrQ,aAAe,WAC7B,OAAO,CACT,EAEAqQ,EAAgB/W,aAAe,WAC7B,IAAI2C,EAAOxH,KAAKkc,MAEZ1U,GAEFA,EAAKuP,mBAAkB,SAAUnB,EAAIhW,GACnC,IAAIkc,EAAQtU,EAAK1F,cAAclC,GAC/BgW,EAAGpU,KAAK,WAAYsa,EACtB,GAEJ,EAEAF,EAAgB7P,yBAA2B,SAAUvE,GACnDxH,KAAKgX,aAAeT,EAAgB/O,GACpCxH,KAAKkc,MAAQ,KACblc,KAAKqL,MAAMxD,WACb,EAUA+T,EAAgB3P,kBAAoB,SAAUC,EAAY1E,EAAM6G,GAG9D,SAAS4I,EAA0BrB,GAC5BA,EAAGsB,UACNtB,EAAG9I,YAAc8I,EAAGuB,eAAgB,EAExC,CANA9I,EAAM2N,EAAmB3N,GAQzB,IAAK,IAAIzO,EAAMsM,EAAW9I,MAAOxD,EAAMsM,EAAW2C,IAAKjP,IAAO,CAC5D,IAAIkc,EAAQtU,EAAK1F,cAAclC,GAE/B,GAAIic,EAAgBrU,EAAMsU,EAAOlc,EAAKyO,GAAM,CAC1C,IAAIuH,EAAK,IAAI5V,KAAK2b,YAAYnU,EAAM5H,EAAKI,KAAKgX,cAC9CpB,EAAG7M,SAASkO,GACZrB,EAAGpU,KAAK,WAAYsa,GACpB9b,KAAKqL,MAAMpL,IAAI2V,GACfpO,EAAKqO,iBAAiBjW,EAAKgW,EAC7B,CACF,CACF,EAYAgG,EAAgBza,OAAS,SAAUib,GACjC,IAAI/Q,EAAQrL,KAAKqL,MACb7D,EAAOxH,KAAKkc,MAEZ1U,GAAQ4U,EACV5U,EAAKuP,mBAAkB,SAAUnB,GAC/BA,EAAGpM,SAAQ,WACT6B,EAAMlK,OAAOyU,EACf,GACF,IAEAvK,EAAMxD,WAEV,EAgBA,IAAI9C,EAAW0W,EACfzW,EAAOC,QAAUF,C,wBC3MjB,IAAI5F,EAAU,EAAQ,OAElBkH,EAAU,EAAQ,OAElB+I,EAAQ/I,EAAQ+I,MAoBpB,SAASiN,EAAmBC,EAAWC,EAAc1T,GACnD,IAAI2T,EAAOF,EAAUG,UACjBC,EAAeJ,EAAUK,cAAcD,eACvC1R,EAAIwR,EAAKxR,EACTC,EAAIuR,EAAKvR,EACTyC,EAAQ8O,EAAK9O,MACbC,EAAS6O,EAAK7O,OACdiP,EAAY/T,EAAYlI,IAAI,oBAAsB,EAEtDqK,GAAK4R,EAAY,EACjB3R,GAAK2R,EAAY,EACjBlP,GAASkP,EACTjP,GAAUiP,EAEV5R,EAAI1G,KAAKuY,MAAM7R,GACf0C,EAAQpJ,KAAK8K,MAAM1B,GACnB,IAAIoP,EAAW,IAAI3d,EAAQ4d,KAAK,CAC9BhT,MAAO,CACLiB,EAAGA,EACHC,EAAGA,EACHyC,MAAOA,EACPC,OAAQA,KAcZ,OAVI4O,IACFO,EAAS/S,MAAM2S,EAAe,QAAU,UAAY,EACpDvd,EAAQqT,UAAUsK,EAAU,CAC1B/S,MAAO,CACL2D,MAAOA,EACPC,OAAQA,IAET9E,IAGEiU,CACT,CAEA,SAASE,EAAoBC,EAAOV,EAAc1T,GAChD,IAAIqU,EAAaD,EAAMR,UAEnBK,EAAW,IAAI3d,EAAQge,OAAO,CAChCpT,MAAO,CACLqT,GAAIhO,EAAM6N,EAAMG,GAAI,GACpBC,GAAIjO,EAAM6N,EAAMI,GAAI,GACpBC,GAAIlO,EAAM8N,EAAWI,GAAI,GACzBC,EAAGnO,EAAM8N,EAAWK,EAAG,GACvBC,WAAYN,EAAWM,WACvBC,SAAUP,EAAWO,SACrBC,UAAWR,EAAWQ,aAa1B,OATInB,IACFO,EAAS/S,MAAM0T,SAAWP,EAAWM,WACrCre,EAAQqT,UAAUsK,EAAU,CAC1B/S,MAAO,CACL0T,SAAUP,EAAWO,WAEtB5U,IAGEiU,CACT,CAEA,SAASa,EAAeC,EAAUrB,EAAc1T,GAC9C,OAAK+U,EAEwB,UAAlBA,EAASpG,KACXwF,EAAoBY,EAAUrB,EAAc1T,GACxB,gBAAlB+U,EAASpG,KACX6E,EAAmBuB,EAAUrB,EAAc1T,GAG7C,KAPE,IAQX,CAEA5D,EAAQoX,mBAAqBA,EAC7BpX,EAAQ+X,oBAAsBA,EAC9B/X,EAAQ0Y,eAAiBA,C,wBCvGzB,IAAIte,EAAS,EAAQ,OAEjBwe,EAAO,EAAQ,OAEfC,EAAQ,EAAQ,OAEhBC,EAAW,EAAQ,OAEnBC,EAAmB,EAAQ,OAE3BC,EAAmB,EAAQ,OAE3BC,EAAsB,EAAQ,OAoBlC,SAASnZ,EAASoZ,EAAOC,EAAOvV,EAAawV,EAAUC,GAKrD,IAFA,IAAIC,EAAQ,IAAIT,EAAMO,GAEb3Y,EAAI,EAAGA,EAAIyY,EAAMxY,OAAQD,IAChC6Y,EAAMC,QAAQnf,EAAO8C,SACrBgc,EAAMzY,GAAG+Y,GAAIN,EAAMzY,GAAG8J,KAAM9J,GAAIA,GAGlC,IAAIgZ,EAAe,GACfC,EAAa,GACbC,EAAY,EAEhB,IAASlZ,EAAI,EAAGA,EAAI0Y,EAAMzY,OAAQD,IAAK,CACrC,IAAImZ,EAAOT,EAAM1Y,GACboZ,EAASD,EAAKC,OACdjM,EAASgM,EAAKhM,OAEd0L,EAAMQ,QAAQD,EAAQjM,EAAQ+L,KAChCD,EAAW/Y,KAAKiZ,GAChBH,EAAa9Y,KAAKvG,EAAO8C,SAAS0c,EAAKJ,GAAIK,EAAS,MAAQjM,IAC5D+L,IAEJ,CAEA,IACII,EADApB,EAAW/U,EAAYlI,IAAI,oBAG/B,GAAiB,gBAAbid,GAA2C,UAAbA,EAChCoB,EAAWd,EAAoBC,EAAOtV,OACjC,CACL,IAAIoW,EAAehB,EAAiBtd,IAAIid,GACpCsB,EAAkBD,GAAsC,SAAtBA,EAAazH,MAAkByH,EAAaE,YAAmB,GAIjG9f,EAAO+f,QAAQF,EAAiB,SAAW,GAC7CA,EAAgBG,OAAO,CAAC,UAG1B,IAAIC,EAAiBtB,EAAiBG,EAAO,CAC3Ce,gBAAiBA,IAEnBF,EAAW,IAAInB,EAAKyB,EAAgBzW,GACpCmW,EAASO,SAASpB,EACpB,CAEA,IAAIqB,EAAW,IAAI3B,EAAK,CAAC,SAAUhV,GAkBnC,OAjBA2W,EAASD,SAASZ,EAAYD,GAC9BJ,GAAcA,EAAWU,EAAUQ,GACnCzB,EAAS,CACP0B,SAAUT,EACVU,OAAQnB,EACRoB,WAAY,QACZC,MAAO,CACLC,KAAMb,EACNc,KAAMN,GAERO,UAAW,CACTF,KAAM,OACNC,KAAM,cAIVvB,EAAM1H,SACC0H,CACT,CAEAvZ,EAAOC,QAAUF,C,wBCrGjB,IAAI1F,EAAS,EAAQ,OAEjBwe,EAAO,EAAQ,OAEfG,EAAmB,EAAQ,OAE3BgC,EAAc,EAAQ,OAEtBC,EAAyBD,EAAYC,uBAErCC,EAAmB,EAAQ,OAE3BC,EAAyBD,EAAiBC,uBAE1CC,EAAS,EAAQ,OAEjBC,EAAmBD,EAAOC,iBAE1BpC,EAAmB,EAAQ,OAE3BqC,EAAe,EAAQ,OAEvBC,EAA0BD,EAAaC,wBAEvCC,EAAS,EAAQ,OAEjBC,EAAmB,EAAQ,OAE3BC,EAAkBD,EAAiBC,gBAEnCC,EAAgB,EAAQ,OAExBC,EAAkCD,EAAcC,gCA4BpD,SAAS1C,EAAoBY,EAAQjW,EAAawF,GAChDA,EAAMA,GAAO,CAAC,EAETmS,EAAOK,WAAW/B,KACrBA,EAAS0B,EAAOM,mBAAmBhC,IAGrC,IAGIiC,EAHAC,EAAenY,EAAYlI,IAAI,oBAC/BsgB,EAAqBhD,EAAiBtd,IAAIqgB,GAC1CE,EAAeX,EAAwB1X,GAGvCqY,IACFH,EAAkB1hB,EAAO8hB,IAAID,EAAaE,cAAc,SAAUC,GAChE,IAAIC,EAAU,CACZ9R,KAAM6R,GAEJE,EAAYL,EAAaM,QAAQ7gB,IAAI0gB,GAEzC,GAAIE,EAAW,CACb,IAAIE,EAAWF,EAAU5gB,IAAI,QAC7B2gB,EAAQ9J,KAAO2I,EAAuBsB,EACxC,CAEA,OAAOH,CACT,KAGGP,IAEHA,EAAkBE,IAAuBA,EAAmBS,kBAAoBT,EAAmBS,oBAAsBT,EAAmB9B,WAAW9G,UAAY,CAAC,IAAK,MAG3K,IAKIsJ,EACAC,EANAC,EAAc7D,EAAiBc,EAAQ,CACzCI,gBAAiB6B,EACjBe,cAAezT,EAAIyT,cACnBC,gBAAiB1T,EAAI2T,mBAAqB3iB,EAAO4iB,MAAMrB,EAAiCG,EAAiBlY,GAAe,OAI1HqY,GAAgB7hB,EAAOsT,KAAKkP,GAAa,SAAUP,EAASY,GAC1D,IAAIC,EAAWb,EAAQa,SACnBC,EAAoBlB,EAAamB,gBAAgB1hB,IAAIwhB,GAErDC,IAC2B,MAAzBT,IACFA,EAAwBO,GAG1BZ,EAAQgB,YAAcF,EAAkBG,kBAGR,MAA9BjB,EAAQkB,UAAUC,WACpBb,GAAgB,EAEpB,IAEKA,GAA0C,MAAzBD,IACpBE,EAAYF,GAAuBa,UAAUC,SAAW,GAG1D,IAAIC,EAAuBhC,EAAgB7X,EAAagZ,GACpDc,EAAO,IAAI9E,EAAKgE,EAAahZ,GACjC8Z,EAAKC,mBAAmBF,GACxB,IAAIG,EAA0C,MAAzBlB,GAAiCmB,EAA0BhE,GAAU,SAAUiE,EAASC,EAAS9X,EAAWgX,GAE/H,OAAOA,IAAaP,EAAwBzW,EAAYlL,KAAKijB,sBAAsBF,EAASC,EAAS9X,EAAWgX,EAClH,EAAI,KAGJ,OAFAS,EAAKvP,eAAgB,EACrBuP,EAAKpD,SAAST,EAAQ,KAAM+D,GACrBF,CACT,CAEA,SAASG,EAA0BhE,GACjC,GAAIA,EAAOoE,eAAiBjD,EAAwB,CAClD,IAAIkD,EAAaC,EAAiBtE,EAAOtX,MAAQ,IACjD,OAAqB,MAAd2b,IAAuB9jB,EAAOwB,QAAQwf,EAAiB8C,GAChE,CACF,CAEA,SAASC,EAAiB5b,GACxB,IAAI9B,EAAI,EAER,MAAOA,EAAI8B,EAAK7B,QAAqB,MAAX6B,EAAK9B,GAC7BA,IAGF,OAAO8B,EAAK9B,EACd,CAEA,IAAIX,EAAWmZ,EACflZ,EAAOC,QAAUF,C,wBCvJjB,IAAIiZ,EAAmB,EAAQ,OAE3BH,EAAO,EAAQ,OAEftC,EAAQ,EAAQ,OAEhBf,EAASe,EAAMf,OACf3Z,EAAU0a,EAAM1a,QAqCpB,SAASkE,EAAS8D,EAAawF,EAAKgV,GAClChV,EAAMxN,EAAQwN,IAAQ,CACpB6Q,gBAAiB7Q,IACdmM,EAAO,CAAC,EAAGnM,GAChB,IAAIyQ,EAASjW,EAAYya,YACrBC,EAAiBvF,EAAiBc,EAAQzQ,GAC1CsU,EAAO,IAAI9E,EAAK0F,EAAgB1a,GAEpC,OADA8Z,EAAKpD,SAAST,EAAQuE,GACfV,CACT,CAEA3d,EAAOC,QAAUF,C,wBCvDjB,IAAIqb,EAAS,EAAQ,OAEjBoD,EAAYpD,EAAOoD,UAwBvB,SAASze,IACP,IAAI0e,EAAQD,IACZ,OAAO,SAAU3a,GACf,IAAI6a,EAASD,EAAM5a,GACf8a,EAAkB9a,EAAY8a,gBAC9BC,EAAgBF,EAAOG,MACvBC,EAAsBJ,EAAOK,kBAI7BF,EAAQH,EAAOG,MAAQF,GAAmBA,EAAgBE,MAC1DG,EAAcN,EAAOK,kBAAoBJ,GAAmBA,EAAgBI,kBAChF,SAAUH,EAAgBC,GAASC,EAAsBE,IAAgB,OAC3E,CACF,CAEAhf,EAAOC,QAAUF,C,wBC1CjB,IAAIkf,EAAU,EAAQ,OA4BtBA,EAAQC,eAAe,CACrB1M,KAAM,qBACN2M,MAAO,qBACPtN,OAAQ,8BACP,WAAa,IAQhBoN,EAAQC,eAAe,CACrB1M,KAAM,uBACN2M,MAAO,uBACPtN,OAAQ,gCACP,WAAa,G,wBC5ChB,IAAIuN,EAAgB,EAAQ,OAExBC,EAAmBD,EAAcC,iBA0BrC,SAASnM,EAAgB1Q,EAAM0D,GAC7B,IAAIoZ,EAAY9c,EAAK+c,aAAa,kBAAkB,GAChD9e,EAAM6e,EAAU3e,OAEpB,GAAY,IAARF,EACF,OAAO4e,EAAiB7c,EAAM0D,EAAWoZ,EAAU,IAC9C,GAAI7e,EAAK,CAGd,IAFA,IAAI+e,EAAO,GAEF9e,EAAI,EAAGA,EAAI4e,EAAU3e,OAAQD,IAAK,CACzC,IAAI+e,EAAMJ,EAAiB7c,EAAM0D,EAAWoZ,EAAU5e,IACtD8e,EAAK5e,KAAK6e,EACZ,CAEA,OAAOD,EAAKE,KAAK,IACnB,CACF,CAEAzf,EAAQiT,gBAAkBA,C,wBC9C1B,IAAI7Y,EAAS,EAAQ,OAoBrB,SAASslB,EAAmBC,EAASC,EAAmBhc,GACtD,GAAI+b,GAAWvlB,EAAO+f,QAAQyF,EAAmBD,EAAQpN,OAAS,EAAG,CACnE,IAAIsN,EAAOjc,EAAYkc,UAAUC,KAAKF,KAClCG,EAAaL,EAAQK,WAMzB,GAJ0B,kBAAfA,IACTA,EAAaH,EAAKI,YAAYD,IAG5BA,GAAcH,EAAKK,SAASF,GAC9B,MAAO,CACLpF,KAAMoF,GAIV,IAAIG,EAAeR,EAAQQ,aAE3B,GAAoB,MAAhBA,IAAyBH,EAAaH,EAAKI,YAAYE,IACzD,MAAO,CACLvF,KAAMoF,EAGZ,CACF,CAGA,SAASI,EAAcxF,GACrB,IAAIzV,EAAO,GAEX,MAAOyV,EACLA,EAAOA,EAAKpP,WACZoP,GAAQzV,EAAKxE,KAAKia,GAGpB,OAAOzV,EAAKkb,SACd,CAEA,SAASC,EAAcC,EAAU3F,GAC/B,IAAI4F,EAAWJ,EAAcG,GAC7B,OAAOnmB,EAAO+f,QAAQqG,EAAU5F,IAAS,CAC3C,CAGA,SAAS6F,EAAiB7F,EAAMhX,GAC9B,IAAI8c,EAAe,GAEnB,MAAO9F,EAAM,CACX,IAAI+F,EAAgB/F,EAAK3U,UACzBya,EAAa/f,KAAK,CAChB4J,KAAMqQ,EAAKrQ,KACXtE,UAAW0a,EACXC,MAAOhd,EAAYmL,YAAY4R,KAEjC/F,EAAOA,EAAKpP,UACd,CAGA,OADAkV,EAAaL,UACNK,CACT,CAEA1gB,EAAQ0f,mBAAqBA,EAC7B1f,EAAQogB,cAAgBA,EACxBpgB,EAAQsgB,cAAgBA,EACxBtgB,EAAQygB,iBAAmBA,C,uBCnF3B,IAAII,EAAmB,EAAQ,OAE3BzmB,EAAS,EAAQ,OAEjB6gB,EAAmB,EAAQ,OAE3BC,EAAyBD,EAAiBC,uBAE1CQ,EAAgB,EAAQ,OAExBC,EAAkCD,EAAcC,gCAoBhDmF,EAAmB,CAKrBC,aAAc,KAKdC,eAAgB,SAAUC,EAAQC,GAIhC,IAAI7D,EAKA8D,EAJAC,EAAaF,EAAQG,aAAa,QAAStmB,KAAKW,IAAI,eACpD4lB,EAAaJ,EAAQG,aAAa,QAAStmB,KAAKW,IAAI,eACpD6lB,EAAYH,EAAW1lB,IAAI,QAC3B8lB,EAAYF,EAAW5lB,IAAI,QAIb,aAAd6lB,GACFN,EAAOQ,OAAS,aAChBpE,EAAc+D,EAAW9D,iBACzB6D,GAAa,GACU,aAAdK,GACTP,EAAOQ,OAAS,WAChBpE,EAAciE,EAAWhE,iBACzB6D,GAAa,GAEbF,EAAOQ,OAASR,EAAOQ,QAAU,aAGnC,IAAIC,EAAY,CAAC,IAAK,KAClBC,EAAqC,eAAlBV,EAAOQ,OAA0B,EAAI,EACxDG,EAAc7mB,KAAKgmB,aAAeW,EAAUC,GAC5CE,EAAeH,EAAU,EAAIC,GAC7BG,EAAa,CAACV,EAAYE,GAC1BS,EAAeD,EAAWH,GAAkBjmB,IAAI,QAChDsmB,EAAgBF,EAAW,EAAIH,GAAkBjmB,IAAI,QACrD6G,EAAO0e,EAAO1e,KAGlB,GAAIA,GAAQ4e,EAAY,CACtB,IAAIc,EAAgB,GACpB7nB,EAAOsT,KAAKnL,GAAM,SAAU2f,EAAMC,GAChC,IAAIC,EAEAF,EAAKtB,OAASxmB,EAAOwB,QAAQsmB,EAAKtB,QACpCwB,EAAUF,EAAKtB,MAAMxN,QACrB8O,EAAKtB,MAAMyB,QAAQF,IACV/nB,EAAOwB,QAAQsmB,IACxBE,EAAUF,EAAK9O,QACf8O,EAAKG,QAAQF,IAEbC,EAAUF,EAGZD,EAActhB,KAAKyhB,EACrB,IACAnB,EAAO1e,KAAO0f,CAChB,CAEA,IAAIK,EAAyBvnB,KAAKunB,uBAC9BrI,EAAkB,CAAC,CACrB1P,KAAMqX,EACNrP,KAAM2I,EAAuB6G,GAC7B1E,YAAaA,EACbE,UAAW,CACTgF,SAAS,EACT/E,SAAU,GAEZgF,QAAS,CAAC,SACT,CACDjY,KAAMsX,EACNtP,KAAM2I,EAAuB8G,GAC7BQ,QAASF,EAAuBlP,UAElC,OAAOyN,EAAiB9lB,KAAM,CAC5Bkf,gBAAiBA,EACjBwI,gBAAiBH,EAAuB5hB,OAAS,EACjDoc,gBAAiB1iB,EAAO4iB,MAAMrB,EAAiC1B,EAAiBlf,OAEpF,EAMA2c,YAAa,WACX,IAAI0E,EAAMrhB,KAAKgmB,aACf,OAAOhmB,KAAKmmB,QAAQG,aAAajF,EAAM,OAAQrhB,KAAKW,IAAI0gB,EAAM,cAAcsG,IAC9E,GAEF1iB,EAAQ8gB,iBAAmBA,C","sources":["webpack://app/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://app/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://app/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://app/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://app/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://app/./node_modules/echarts/lib/chart/helper/Line.js","webpack://app/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://app/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://app/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://app/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://app/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://app/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://app/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://app/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://app/./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack://app/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://app/./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js","webpack://app/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://app/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://app/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.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\nvar graphic = require(\"../../util/graphic\");\n\nvar Line = require(\"./Line\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar curveUtil = require(\"zrender/lib/core/curve\");\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 * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n this.add(this.createLine(lineData, idx, seriesScope));\n\n this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n var itemModel = lineData.getItemModel(idx);\n var effectModel = itemModel.getModel('effect');\n var size = effectModel.get('symbolSize');\n var symbolType = effectModel.get('symbol');\n\n if (!zrUtil.isArray(size)) {\n size = [size, size];\n }\n\n var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n var symbol = this.childAt(1);\n\n if (this._symbolType !== symbolType) {\n // Remove previous\n this.remove(symbol);\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n symbol.z2 = 100;\n symbol.culling = true;\n this.add(symbol);\n } // Symbol may be removed if loop is false\n\n\n if (!symbol) {\n return;\n } // Shadow color is same with color in default\n\n\n symbol.setStyle('shadowColor', color);\n symbol.setStyle(effectModel.getItemStyle(['color']));\n symbol.attr('scale', size);\n symbol.setColor(color);\n symbol.attr('scale', size);\n this._symbolType = symbolType;\n this._symbolScale = size;\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n var symbol = this.childAt(1);\n\n if (!symbol) {\n return;\n }\n\n var self = this;\n var points = lineData.getItemLayout(idx);\n var period = effectModel.get('period') * 1000;\n var loop = effectModel.get('loop');\n var constantSpeed = effectModel.get('constantSpeed');\n var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n return idx / lineData.count() * period / 3;\n });\n var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n symbol.ignore = true;\n this.updateAnimationPoints(symbol, points);\n\n if (constantSpeed > 0) {\n period = this.getLineLength(symbol) / constantSpeed * 1000;\n }\n\n if (period !== this._period || loop !== this._loop) {\n symbol.stopAnimation();\n var delay = delayExpr;\n\n if (isDelayFunc) {\n delay = delayExpr(idx);\n }\n\n if (symbol.__t > 0) {\n delay = -period * symbol.__t;\n }\n\n symbol.__t = 0;\n var animator = symbol.animate('', loop).when(period, {\n __t: 1\n }).delay(delay).during(function () {\n self.updateSymbolPosition(symbol);\n });\n\n if (!loop) {\n animator.done(function () {\n self.remove(symbol);\n });\n }\n\n animator.start();\n }\n\n this._period = period;\n this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n // Not so accurate\n return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n symbol.__p1 = points[0];\n symbol.__p2 = points[1];\n symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n this.childAt(0).updateData(lineData, idx, seriesScope);\n\n this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n var p1 = symbol.__p1;\n var p2 = symbol.__p2;\n var cp1 = symbol.__cp1;\n var t = symbol.__t;\n var pos = symbol.position;\n var lastPos = [pos[0], pos[1]];\n var quadraticAt = curveUtil.quadraticAt;\n var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n var scaleY = vec2.dist(lastPos, pos) * 1.05;\n symbol.attr('scale', [symbol.scale[0], scaleY]); // make sure the last segment render within endPoint\n\n if (t === 1) {\n pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n }\n } else if (symbol.__lastT === 1) {\n // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n var scaleY = 2 * vec2.dist(p1, pos);\n symbol.attr('scale', [symbol.scale[0], scaleY]);\n } else {\n symbol.attr('scale', this._symbolScale);\n }\n }\n\n symbol.__lastT = symbol.__t;\n symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n this.childAt(0).updateLayout(lineData, idx);\n var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;","\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\nvar Polyline = require(\"./Polyline\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar EffectLine = require(\"./EffectLine\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\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 * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:echarts/chart/helper/EffectLine}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction EffectPolyline(lineData, idx, seriesScope) {\n EffectLine.call(this, lineData, idx, seriesScope);\n this._lastFrame = 0;\n this._lastFramePercent = 0;\n}\n\nvar effectPolylineProto = EffectPolyline.prototype; // Overwrite\n\neffectPolylineProto.createLine = function (lineData, idx, seriesScope) {\n return new Polyline(lineData, idx, seriesScope);\n}; // Overwrite\n\n\neffectPolylineProto.updateAnimationPoints = function (symbol, points) {\n this._points = points;\n var accLenArr = [0];\n var len = 0;\n\n for (var i = 1; i < points.length; i++) {\n var p1 = points[i - 1];\n var p2 = points[i];\n len += vec2.dist(p1, p2);\n accLenArr.push(len);\n }\n\n if (len === 0) {\n return;\n }\n\n for (var i = 0; i < accLenArr.length; i++) {\n accLenArr[i] /= len;\n }\n\n this._offsets = accLenArr;\n this._length = len;\n}; // Overwrite\n\n\neffectPolylineProto.getLineLength = function (symbol) {\n return this._length;\n}; // Overwrite\n\n\neffectPolylineProto.updateSymbolPosition = function (symbol) {\n var t = symbol.__t;\n var points = this._points;\n var offsets = this._offsets;\n var len = points.length;\n\n if (!offsets) {\n // Has length 0\n return;\n }\n\n var lastFrame = this._lastFrame;\n var frame;\n\n if (t < this._lastFramePercent) {\n // Start from the next frame\n // PENDING start from lastFrame ?\n var start = Math.min(lastFrame + 1, len - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (offsets[frame] <= t) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, len - 2);\n } else {\n for (var frame = lastFrame; frame < len; frame++) {\n if (offsets[frame] > t) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, len - 2);\n }\n\n vec2.lerp(symbol.position, points[frame], points[frame + 1], (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]));\n var tx = points[frame + 1][0] - points[frame][0];\n var ty = points[frame + 1][1] - points[frame][1];\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n this._lastFrame = frame;\n this._lastFramePercent = t;\n symbol.ignore = false;\n};\n\nzrUtil.inherits(EffectPolyline, EffectLine);\nvar _default = EffectPolyline;\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar Group = _graphic.Group;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar SymbolClz = require(\"./Symbol\");\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 * Symbol with ripple effect\n * @module echarts/chart/helper/EffectSymbol\n */\nvar EFFECT_RIPPLE_NUMBER = 3;\n\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n var color = effectCfg.rippleEffectColor || effectCfg.color;\n rippleGroup.eachChild(function (ripplePath) {\n ripplePath.attr({\n z: effectCfg.z,\n zlevel: effectCfg.zlevel,\n style: {\n stroke: effectCfg.brushType === 'stroke' ? color : null,\n fill: effectCfg.brushType === 'fill' ? color : null\n }\n });\n });\n}\n/**\n * @constructor\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction EffectSymbol(data, idx) {\n Group.call(this);\n var symbol = new SymbolClz(data, idx);\n var rippleGroup = new Group();\n this.add(symbol);\n this.add(rippleGroup);\n\n rippleGroup.beforeUpdate = function () {\n this.attr(symbol.getScale());\n };\n\n this.updateData(data, idx);\n}\n\nvar effectSymbolProto = EffectSymbol.prototype;\n\neffectSymbolProto.stopEffectAnimation = function () {\n this.childAt(1).removeAll();\n};\n\neffectSymbolProto.startEffectAnimation = function (effectCfg) {\n var symbolType = effectCfg.symbolType;\n var color = effectCfg.color;\n var rippleGroup = this.childAt(1);\n\n for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\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 #4136.\n var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n ripplePath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 99,\n silent: true,\n scale: [0.5, 0.5]\n });\n var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; // TODO Configurable effectCfg.period\n\n ripplePath.animate('', true).when(effectCfg.period, {\n scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\n }).delay(delay).start();\n ripplePath.animateStyle(true).when(effectCfg.period, {\n opacity: 0\n }).delay(delay).start();\n rippleGroup.add(ripplePath);\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Update effect symbol\n */\n\n\neffectSymbolProto.updateEffectAnimation = function (effectCfg) {\n var oldEffectCfg = this._effectCfg;\n var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\n\n for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n var propName = DIFFICULT_PROPS[i];\n\n if (oldEffectCfg[propName] !== effectCfg[propName]) {\n this.stopEffectAnimation();\n this.startEffectAnimation(effectCfg);\n return;\n }\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Highlight symbol\n */\n\n\neffectSymbolProto.highlight = function () {\n this.trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\neffectSymbolProto.downplay = function () {\n this.trigger('normal');\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n */\n\n\neffectSymbolProto.updateData = function (data, idx) {\n var seriesModel = data.hostModel;\n this.childAt(0).updateData(data, idx);\n var rippleGroup = this.childAt(1);\n var itemModel = data.getItemModel(idx);\n var symbolType = data.getItemVisual(idx, 'symbol');\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var color = data.getItemVisual(idx, 'color');\n rippleGroup.attr('scale', symbolSize);\n rippleGroup.traverse(function (ripplePath) {\n ripplePath.attr({\n fill: color\n });\n });\n var symbolOffset = itemModel.getShallow('symbolOffset');\n\n if (symbolOffset) {\n var pos = rippleGroup.position;\n pos[0] = parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] = parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var effectCfg = {};\n effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n effectCfg.rippleScale = itemModel.get('rippleEffect.scale');\n effectCfg.brushType = itemModel.get('rippleEffect.brushType');\n effectCfg.period = itemModel.get('rippleEffect.period') * 1000;\n effectCfg.effectOffset = idx / data.count();\n effectCfg.z = itemModel.getShallow('z') || 0;\n effectCfg.zlevel = itemModel.getShallow('zlevel') || 0;\n effectCfg.symbolType = symbolType;\n effectCfg.color = color;\n effectCfg.rippleEffectColor = itemModel.get('rippleEffect.color');\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n if (effectCfg.showEffectOn === 'render') {\n this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n this._effectCfg = effectCfg;\n } else {\n // Not keep old effect config\n this._effectCfg = null;\n this.stopEffectAnimation();\n var symbol = this.childAt(0);\n\n var onEmphasis = function () {\n symbol.highlight();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.startEffectAnimation(effectCfg);\n }\n };\n\n var onNormal = function () {\n symbol.downplay();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.stopEffectAnimation();\n }\n };\n\n this.on('mouseover', onEmphasis, this).on('mouseout', onNormal, this).on('emphasis', onEmphasis, this).on('normal', onNormal, this);\n }\n\n this._effectCfg = effectCfg;\n};\n\neffectSymbolProto.fadeOut = function (cb) {\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n cb && cb();\n};\n\nzrUtil.inherits(EffectSymbol, Group);\nvar _default = EffectSymbol;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nvar lineContain = require(\"zrender/lib/contain/line\");\n\nvar quadraticContain = require(\"zrender/lib/contain/quadratic\");\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// TODO Batch by color\nvar LargeLineShape = graphic.extendShape({\n shape: {\n polyline: false,\n curveness: 0,\n segs: []\n },\n buildPath: function (path, shape) {\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n path.moveTo(segs[i++], segs[i++]);\n\n for (var k = 1; k < count; k++) {\n path.lineTo(segs[i++], segs[i++]);\n }\n }\n }\n } else {\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n path.moveTo(x0, y0);\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n path.quadraticCurveTo(x2, y2, x1, y1);\n } else {\n path.lineTo(x1, y1);\n }\n }\n }\n },\n findDataIndex: function (x, y) {\n var shape = this.shape;\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n\n for (var k = 1; k < count; k++) {\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n }\n\n dataIndex++;\n }\n } else {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1)) {\n return dataIndex;\n }\n } else {\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n\n dataIndex++;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeLineDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeLineProto = LargeLineDraw.prototype;\n\nlargeLineProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeLineProto.updateData = function (data) {\n this.group.removeAll();\n var lineEl = new LargeLineShape({\n rectHover: true,\n cursor: 'default'\n });\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data); // Add back\n\n\n this.group.add(lineEl);\n this._incremental = null;\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental();\n\n if (data.count() > 5e5) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalUpdate = function (taskParams, data) {\n var lineEl = new LargeLineShape();\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data, !!this._incremental);\n\n if (!this._incremental) {\n lineEl.rectHover = true;\n lineEl.cursor = 'default';\n lineEl.__startIndex = taskParams.start;\n this.group.add(lineEl);\n } else {\n this._incremental.addDisplayable(lineEl, true);\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeLineProto._setCommon = function (lineEl, data, isIncremental) {\n var hostModel = data.hostModel;\n lineEl.setShape({\n polyline: hostModel.get('polyline'),\n curveness: hostModel.get('lineStyle.curveness')\n });\n lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n lineEl.style.strokeNoScale = true;\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n lineEl.setStyle('stroke', visualColor);\n }\n\n lineEl.setStyle('fill');\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n lineEl.seriesIndex = hostModel.seriesIndex;\n lineEl.on('mousemove', function (e) {\n lineEl.dataIndex = null;\n var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex > 0) {\n // Provide dataIndex for tooltip\n lineEl.dataIndex = dataIndex + lineEl.__startIndex;\n }\n });\n }\n};\n\nlargeLineProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeLineDraw;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\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/* global Float32Array */\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n shape: {\n points: null\n },\n symbolProxy: null,\n softClipShape: null,\n buildPath: function (path, shape) {\n var points = shape.points;\n var size = shape.size;\n var symbolProxy = this.symbolProxy;\n var symbolProxyShape = symbolProxy.shape;\n var ctx = path.getContext ? path.getContext() : path;\n var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n if (canBoost) {\n return;\n }\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n }\n\n symbolProxyShape.x = x - size[0] / 2;\n symbolProxyShape.y = y - size[1] / 2;\n symbolProxyShape.width = size[0];\n symbolProxyShape.height = size[1];\n symbolProxy.buildPath(path, symbolProxyShape, true);\n }\n },\n afterBrush: function (ctx) {\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n if (!canBoost) {\n return;\n }\n\n this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n } // fillRect is faster than building a rect path and draw.\n // And it support light globalCompositeOperation.\n\n\n ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n }\n\n this.restoreTransform(ctx);\n },\n findDataIndex: function (x, y) {\n // TODO ???\n // Consider transform\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var w = Math.max(size[0], 4);\n var h = Math.max(size[1], 4); // Not consider transform\n // Treat each element as a rect\n // top down traverse\n\n for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n var i = idx * 2;\n var x0 = points[i] - w / 2;\n var y0 = points[i + 1] - h / 2;\n\n if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n return idx;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeSymbolDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} opt\n * @param {Object} [opt.clipShape]\n */\n\n\nlargeSymbolProto.updateData = function (data, opt) {\n this.group.removeAll();\n var symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default'\n });\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, false, opt);\n\n this.group.add(symbolEl);\n this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n if (this._incremental) {\n return;\n }\n\n var points = data.getLayout('symbolPoints');\n this.group.eachChild(function (child) {\n if (child.startIndex != null) {\n var len = (child.endIndex - child.startIndex) * 2;\n var byteOffset = child.startIndex * 4 * 2;\n points = new Float32Array(points.buffer, byteOffset, len);\n }\n\n child.setShape('points', points);\n });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n // PENDING Incremental data?\n\n\n if (data.count() > 2e6) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data, opt) {\n var symbolEl;\n\n if (this._incremental) {\n symbolEl = new LargeSymbolPath();\n\n this._incremental.addDisplayable(symbolEl, true);\n } else {\n symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default',\n startIndex: taskParams.start,\n endIndex: taskParams.end\n });\n symbolEl.incremental = true;\n this.group.add(symbolEl);\n }\n\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, !!this._incremental, opt);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) {\n var hostModel = data.hostModel;\n opt = opt || {}; // TODO\n // if (data.hasItemVisual.symbolSize) {\n // // TODO typed array?\n // symbolEl.setShape('sizes', data.mapArray(\n // function (idx) {\n // var size = data.getItemVisual(idx, 'symbolSize');\n // return (size instanceof Array) ? size : [size, size];\n // }\n // ));\n // }\n // else {\n\n var size = data.getVisual('symbolSize');\n symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n\n symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n symbolEl.setColor = symbolEl.symbolProxy.setColor;\n var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n symbolEl.setColor(visualColor);\n }\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n symbolEl.seriesIndex = hostModel.seriesIndex;\n symbolEl.on('mousemove', function (e) {\n symbolEl.dataIndex = null;\n var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex >= 0) {\n // Provide dataIndex for tooltip\n symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n }\n });\n }\n};\n\nlargeSymbolProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nvar LinePath = require(\"./LinePath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\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 * @module echarts/chart/helper/Line\n */\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 color = lineData.getItemVisual(idx, 'color');\n var symbolType = lineData.getItemVisual(idx, name);\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [symbolSize, symbolSize];\n }\n\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color);\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new LinePath({\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\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.childOfName('label'); // Quick reject\n\n if (!symbolFrom && !symbolTo && label.ignore) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scale) {\n invScale /= parentNode.scale[0];\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 if (symbolFrom) {\n symbolFrom.attr('position', fromPos);\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos);\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (!label.ignore) {\n label.attr('position', toPos);\n var textPosition;\n var textAlign;\n var textVerticalAlign;\n var textOrigin;\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.attr('rotation', rotation);\n }\n\n var dy;\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 textPosition = [d[0] * distanceX + toPos[0], 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 textPosition = [-d[0] * distanceX + fromPos[0], -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 textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n textOrigin = [-distanceX * dir, -dy];\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n textPosition = [cp[0], cp[1] + dy];\n textAlign = 'center';\n textOrigin = [0, -dy];\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n textOrigin = [distanceX * dir, -dy];\n break;\n }\n\n label.attr({\n style: {\n // Use the user specified text align and baseline first\n textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n textAlign: label.__textAlign || textAlign\n },\n position: textPosition,\n scale: [invScale, invScale],\n origin: textOrigin\n });\n }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._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 var label = new graphic.Text({\n name: 'label',\n // FIXME\n // Temporary solution for `focusNodeAdjacency`.\n // line label do not use the opacity of lineStyle.\n lineLabelOriginalOpacity: 1\n });\n this.add(label);\n zrUtil.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};\n\nlineProto.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 zrUtil.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\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n labelModel = itemModel.getModel('label');\n hoverLabelModel = itemModel.getModel('emphasis.label');\n }\n\n var visualColor = lineData.getItemVisual(idx, 'color');\n var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor,\n opacity: visualOpacity\n }, lineStyle));\n line.hoverStyle = hoverLineStyle; // Update symbol\n\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n symbol.setColor(visualColor);\n symbol.setStyle({\n opacity: visualOpacity\n });\n }\n }, this);\n var showLabel = labelModel.getShallow('show');\n var hoverShowLabel = hoverLabelModel.getShallow('show');\n var label = this.childOfName('label');\n var defaultLabelColor;\n var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n if (showLabel || hoverShowLabel) {\n defaultLabelColor = visualColor || '#000';\n baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n if (baseText == null) {\n var rawVal = seriesModel.getRawValue(idx);\n baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n }\n }\n\n var normalText = showLabel ? baseText : null;\n var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (normalText != null || emphasisText != null) {\n graphic.setTextStyle(label.style, labelModel, {\n text: normalText\n }, {\n autoColor: defaultLabelColor\n });\n label.__textAlign = labelStyle.textAlign;\n label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelModel.get('position') || 'middle';\n var distance = labelModel.get('distance');\n\n if (!zrUtil.isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n if (emphasisText != null) {\n // Only these properties supported in this emphasis style here.\n label.hoverStyle = {\n text: emphasisText,\n textFill: hoverLabelModel.getTextColor(true),\n // For merging hover style to normal style, do not use\n // `hoverLabelModel.getFont()` here.\n fontStyle: hoverLabelModel.getShallow('fontStyle'),\n fontWeight: hoverLabelModel.getShallow('fontWeight'),\n fontSize: hoverLabelModel.getShallow('fontSize'),\n fontFamily: hoverLabelModel.getShallow('fontFamily')\n };\n } else {\n label.hoverStyle = {\n text: null\n };\n }\n\n label.ignore = !showLabel && !hoverShowLabel;\n graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\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 * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\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 doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.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\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = el.useHoverLayer = 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._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\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\nvar _default = LineDraw;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\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 * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n type: 'ec-line',\n style: {\n stroke: '#000',\n fill: null\n },\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n percent: 1,\n cpx1: null,\n cpy1: null\n },\n buildPath: function (ctx, shape) {\n this[isLine(shape) ? '_buildPathLine' : '_buildPathCurve'](ctx, shape);\n },\n _buildPathLine: straightLineProto.buildPath,\n _buildPathCurve: bezierCurveProto.buildPath,\n pointAt: function (t) {\n return this[isLine(this.shape) ? '_pointAtLine' : '_pointAtCurve'](t);\n },\n _pointAtLine: straightLineProto.pointAt,\n _pointAtCurve: bezierCurveProto.pointAt,\n tangentAt: function (t) {\n var shape = this.shape;\n var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : this._tangentAtCurve(t);\n return vec2.normalize(p, p);\n },\n _tangentAtCurve: bezierCurveProto.tangentAt\n});\n\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\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 * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n // var seriesModel = lineData.hostModel;\n var points = lineData.getItemLayout(idx);\n var line = new graphic.Polyline({\n shape: {\n points: points\n }\n });\n this.add(line);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childAt(0);\n var target = {\n shape: {\n points: lineData.getItemLayout(idx)\n }\n };\n graphic.updateProps(line, target, seriesModel, idx);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var line = this.childAt(0);\n var itemModel = lineData.getItemModel(idx);\n var visualColor = lineData.getItemVisual(idx, 'color');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n if (!seriesScope || lineData.hasItemOption) {\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n }\n\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor\n }, lineStyle));\n line.hoverStyle = hoverLineStyle;\n graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n var polyline = this.childAt(0);\n polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\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 * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.<number>} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var 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, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\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\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(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\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.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 * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\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 graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.<number>} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: null,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\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 * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\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/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.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 seriesScope = makeSeriesScope(data); // 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 (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', 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 = data.getItemLayout(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.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, 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._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = 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.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.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\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","\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\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\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*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\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 clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\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 clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\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);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = 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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar Graph = require(\"../../data/Graph\");\n\nvar linkList = require(\"../../data/helper/linkList\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar createListFromArray = require(\"./createListFromArray\");\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*/\nfunction _default(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(link.id, 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.type !== 'view' ? 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\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\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 * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(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) {\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 dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.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\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\nvar _default = createListFromArray;\nmodule.exports = _default;","\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\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\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 * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.<string|Object>} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.<string>} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;","\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\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\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 * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\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\nmodule.exports = _default;","\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\nvar echarts = require(\"../../echarts\");\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 * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n}, function () {});","\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\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\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 * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimension('defaultedLabel', true);\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n return retrieveRawValue(data, dataIndex, labelDims[0]);\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n vals.push(val);\n }\n\n return vals.join(' ');\n }\n}\n\nexports.getDefaultLabel = getDefaultLabel;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\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*/\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n var root = seriesModel.getData().tree.root;\n var targetNode = payload.targetNode;\n\n if (typeof targetNode === 'string') {\n targetNode = root.getNodeById(targetNode);\n }\n\n if (targetNode && root.contains(targetNode)) {\n return {\n node: targetNode\n };\n }\n\n var targetNodeId = payload.targetNodeId;\n\n if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n return {\n node: targetNode\n };\n }\n }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n var path = [];\n\n while (node) {\n node = node.parentNode;\n node && path.push(node);\n }\n\n return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n var viewPath = getPathToRoot(viewRoot);\n return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n var treePathInfo = [];\n\n while (node) {\n var nodeDataIndex = node.dataIndex;\n treePathInfo.push({\n name: node.name,\n dataIndex: nodeDataIndex,\n value: seriesModel.getRawValue(nodeDataIndex)\n });\n node = node.parentNode;\n }\n\n treePathInfo.reverse();\n return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;","\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\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\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*/\nvar seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;"],"names":["graphic","Line","zrUtil","_symbol","createSymbol","vec2","curveUtil","EffectLine","lineData","idx","seriesScope","Group","call","this","add","createLine","_updateEffectSymbol","effectLineProto","prototype","itemModel","getItemModel","effectModel","getModel","size","get","symbolType","isArray","color","getItemVisual","symbol","childAt","_symbolType","remove","z2","culling","setStyle","getItemStyle","attr","setColor","_symbolScale","_updateEffectAnimation","self","points","getItemLayout","period","loop","constantSpeed","delayExpr","retrieve","count","isDelayFunc","ignore","updateAnimationPoints","getLineLength","_period","_loop","stopAnimation","delay","__t","animator","animate","when","during","updateSymbolPosition","done","start","dist","__p1","__cp1","__p2","updateData","p1","p2","cp1","t","pos","position","lastPos","quadraticAt","quadraticDerivativeAt","tx","ty","rotation","Math","atan2","PI","undefined","__lastT","scaleY","scale","updateLayout","inherits","_default","module","exports","Polyline","EffectPolyline","_lastFrame","_lastFramePercent","effectPolylineProto","_points","accLenArr","len","i","length","push","_offsets","_length","offsets","lastFrame","min","frame","lerp","_graphic","_number","parsePercent","SymbolClz","EFFECT_RIPPLE_NUMBER","normalizeSymbolSize","symbolSize","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","eachChild","ripplePath","z","zlevel","style","stroke","brushType","fill","EffectSymbol","data","beforeUpdate","getScale","effectSymbolProto","stopEffectAnimation","removeAll","startEffectAnimation","strokeNoScale","silent","effectOffset","rippleScale","animateStyle","opacity","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","propName","highlight","trigger","downplay","seriesModel","hostModel","traverse","symbolOffset","getShallow","symbolRotate","showEffectOn","off","onEmphasis","onNormal","on","fadeOut","cb","IncrementalDisplayable","lineContain","quadraticContain","LargeLineShape","extendShape","shape","polyline","curveness","segs","buildPath","path","moveTo","k","lineTo","x0","y0","x1","y1","x2","y2","quadraticCurveTo","findDataIndex","x","y","dataIndex","containStroke","LargeLineDraw","group","largeLineProto","isPersistent","_incremental","lineEl","rectHover","cursor","setShape","getLayout","_setCommon","incrementalPrepareUpdate","_clearIncremental","incrementalUpdate","taskParams","addDisplayable","__startIndex","isIncremental","useStyle","getLineStyle","visualColor","getVisual","seriesIndex","e","offsetX","offsetY","incremental","clearDisplaybles","BOOST_SIZE_THRESHOLD","LargeSymbolPath","symbolProxy","softClipShape","symbolProxyShape","ctx","getContext","canBoost","isNaN","contain","width","height","afterBrush","setTransform","fillRect","restoreTransform","w","max","h","LargeSymbolDraw","largeSymbolProto","opt","symbolEl","child","startIndex","endIndex","byteOffset","Float32Array","buffer","end","Array","clipShape","extrudeShadow","vector","symbolUtil","LinePath","round","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","name","symbolPath","line","subPixelOptimize","setLinePoints","targetShape","percent","cpx1","cpy1","NaN","updateSymbolAndLabelBeforeLineUpdate","lineGroup","symbolFrom","childOfName","symbolTo","label","invScale","parentNode","parent","__dirty","fromPos","pointAt","toPos","d","sub","normalize","tangent","tangentAt","textPosition","textAlign","textVerticalAlign","textOrigin","distance","__labelDistance","distanceX","distanceY","halfPercent","n","cp","dy","dir","__position","__verticalAlign","__textAlign","origin","_createLine","lineProto","linePoints","initProps","Text","lineLabelOriginalOpacity","each","_updateCommonStl","target","updateProps","key","lineStyle","hoverLineStyle","labelModel","hoverLabelModel","hasItemOption","visualOpacity","retrieve3","defaults","hoverStyle","defaultLabelColor","baseText","showLabel","hoverShowLabel","getFormattedLabel","dataType","rawVal","getRawValue","getName","isFinite","normalText","emphasisText","retrieve2","labelStyle","setTextStyle","text","autoColor","textFill","getTextColor","fontStyle","fontWeight","fontSize","fontFamily","setHoverStyle","linePath","dirty","LineGroup","LineDraw","ctor","_ctor","lineDrawProto","doAdd","lineDraw","itemLayout","lineNeedsDraw","el","setItemGraphicEl","doUpdate","oldLineData","newLineData","oldIdx","newIdx","itemEl","getItemGraphicEl","isEffectObject","animators","makeSeriesScope","isPointNaN","pt","pts","_lineData","diff","update","execute","eachItemGraphicEl","_seriesScope","updateIncrementalAndHover","isGroup","useHoverLayer","straightLineProto","bezierCurveProto","BezierCurve","isLine","type","_buildPathLine","_buildPathCurve","_pointAtLine","_pointAtCurve","p","_tangentAtCurve","_createPolyline","polylineProto","_labelHelper","getDefaultLabel","symbolProto","getSymbolSize","slice","driftSymbol","dx","drift","_createSymbol","keepAspect","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","draggable","isInit","_updateCommon","fadeIn","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","__symbolOriginalScale","ratio","emphasisOpt","animateTo","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","itemStyle","hoverItemStyle","hoverAnimation","cursorStyle","extend","elStyle","symbolInnerColor","liftZ","z2Origin","__z2Origin","useNameLabel","getLabelDefaultText","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","isAnimationEnabled","keepLabel","_util","isObject","SymbolDraw","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","point","isIgnore","normalizeUpdateOpt","oldData","_data","SymbolCtor","enableAnimation","createGridClipPath","cartesian","hasAnimation","rect","getArea","isHorizontal","getBaseAxis","lineWidth","floor","clipPath","Rect","createPolarClipPath","polar","sectorArea","Sector","cx","cy","r0","r","startAngle","endAngle","clockwise","createClipPath","coordSys","List","Graph","linkList","createDimensions","CoordinateSystem","createListFromArray","nodes","edges","directed","beforeLink","graph","addNode","id","linkNameList","validEdges","linkCount","link","source","addEdge","nodeData","coordSysCtor","coordDimensions","dimensions","indexOf","concat","dimensionNames","initData","edgeData","mainData","struct","structAttr","datas","node","edge","datasAttr","_sourceType","SOURCE_FORMAT_ORIGINAL","_dimensionHelper","getDimensionTypeByAxis","_model","getDataItemValue","_referHelper","getCoordSysInfoBySeries","Source","_dataStackHelper","enableDataStack","_sourceHelper","makeSeriesEncodeForAxisCoordSys","isInstance","seriesDataToSource","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","map","coordSysDims","dim","dimInfo","axisModel","axisMap","axisType","getDimensionsInfo","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","encodeDefaulter","useEncodeDefaulter","curry","dimIndex","coordDim","categoryAxisModel","categoryAxisMap","ordinalMeta","getOrdinalMeta","otherDims","itemName","stackCalculationInfo","list","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","defaultDimValueGetter","sourceFormat","sampleItem","firstDataNotNull","nameList","getSource","dimensionsInfo","makeInner","inner","fields","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","progressive","echarts","registerAction","event","_dataProvider","retrieveRawValue","labelDims","mapDimension","vals","val","join","retrieveTargetInfo","payload","validPayloadTypes","root","getData","tree","targetNode","getNodeById","contains","targetNodeId","getPathToRoot","reverse","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","value","createListSimply","seriesModelMixin","_baseAxisDim","getInitialData","option","ecModel","addOrdinal","xAxisModel","getComponent","yAxisModel","xAxisType","yAxisType","layout","coordDims","baseAxisDimIndex","baseAxisDim","otherAxisDim","axisModels","baseAxisType","otherAxisType","newOptionData","item","index","newItem","unshift","defaultValueDimensions","tooltip","dimsDef","dimensionsCount","axis"],"sourceRoot":""}